我需要清理一個字符串並確保它只包含字母數字字符。我想出了下面的代碼是由於某種原因失敗PHP:使用正則表達式替換字符串除了字母數字字符以外的所有東西
$string = 'aaa`bbb!!';
$string = preg_replace("#[^a-zA-z0-9]*#", "", $string);
echo $string;die;
我收到的輸出是aaa`bbb而我希望AAABBB。你能幫我解決這個問題嗎?
我需要清理一個字符串並確保它只包含字母數字字符。我想出了下面的代碼是由於某種原因失敗PHP:使用正則表達式替換字符串除了字母數字字符以外的所有東西
$string = 'aaa`bbb!!';
$string = preg_replace("#[^a-zA-z0-9]*#", "", $string);
echo $string;die;
我收到的輸出是aaa`bbb而我希望AAABBB。你能幫我解決這個問題嗎?
這應該是一個資本Z:
preg_replace("#[^a-zA-Z0-9]*#", "", $string);
當你寫A-z
這意味着所有A
(ASCII值65)和z
(ASCII值122)之間的字符。這包括反引號(ASCII值爲96)以及其他一些您不想要的內容(下劃線,方括號,反斜槓和代字號)。
您也可以使用+
而不是*
來保存重複用空字符串替換空字符串。
我認爲*
是不必要的,你可以簡化\W
。剛剛嘗試以下操作:
$string = preg_replace("/[\W_]/", "", $string);
另外,如果你只是想驗證 - 退房ctype_alnum
。它避免了RegEx庫的開銷。
這當前允許使用下劃線 - 可以用'\ W | _'或'[\ W_]'作爲表達式來刪除它。 – 2010-07-12 21:26:46
@Peter。下劃線的好處。我已經更新了我的表情。 – 2010-07-13 00:14:59
對於鷹眼上的'z' – 2010-07-12 21:21:55
oh ops,我討厭這樣的錯字!感謝您指出! – Eugene 2010-07-12 21:24:13
或使用i標誌區分大小寫:preg_replace(「#[^ a-z0-9] *#i」,「」,$ string); – 2010-07-12 21:25:13