2011-04-17 77 views

回答

0

那麼,如果你想成爲準確,你可以使用:

$tags = explode(', ',$input); 

一個更快樂的匹配,而無需使用正則表達式:

$tags = explode(',',$input); 
for($i=0;$i<count($tags);$i++) { 
    $tags[$i] = trim($tags[$i]); 
} 

並使用正則表達式:

$tags = preg_split('/\s*,\s*/',$input,-1,PREG_SPLIT_NO_EMPTY); 
+0

感謝您的答覆,但我其實並不需要 「獨立」 的標記成不同的單詞。我真的只需要重新檢測格式,因爲它會在網站上「按原樣」顯示,並且我需要格式一致。我有一個說明向用戶解釋如何格式化他們的標籤,我只需要讓他們知道什麼時候沒有以正確的方式完成(並阻止插入操作)謝謝! – user712282 2011-04-17 17:07:29

+0

您可以在第二個示例中始終使用implode(',',$ tags),並檢查該輸出是否與用戶輸入的內容不同。 – dog 2011-04-17 17:11:00

0

你可以簡單地使用explode將字符串拆分爲部分。

$words = explode(', ',$_POST['words']); 
0

您可以在服務器端重新格式化用戶輸入,不要強迫他們擔心格式。只需寫功能爲你做。像

$correct_input = reformatInput($user_input); 

功能reformatInput()事情可能是這樣的一個

function reformatInput($inp) { 
    $inparr = explode(" ", str_replace(",", " ", $inp)); 
    $res = array(); 
    foreach ($inparr as $item) if ($item != '') $res[] = $item; 
    return join(", ", $res); // join() is alias of implode() 
    } 

如果在用戶的輸入沒有的話這個函數返回comma+space空字符串分離包含單詞。

現在,如果你有用戶輸入這樣的一個例子

$user_input = " word1,word2, word3,, word4, word5 word6 word7 ,,,"; 

您可以使用該功能和輸出格式正確

$correct_input = reformatInput($user_input); 
    echo "user input ($correct_input)"; 

輸出基於這個例子將是

重新格式化

用戶輸入(word1,word2,word3,word4,word5,word6,word7)

通常,這就是你想要的結果。

注意:您可以使用Ajax重新格式化輸入元素的輸入事件,並在輸入字段中將其存回(正確的格式),或者使用JavaScript重寫此函數並在客戶端執行此操作,但是在如果客戶端在他/她的瀏覽器中禁用JavaScript,則應該再次在服務器端進行檢查,並且它不起作用。

你可以做到這一點,沒有正則表達式,你可以很容易地看到。


參考文獻:

相關問題