2010-07-12 66 views

回答

10

這應該是一個資本Z:

preg_replace("#[^a-zA-Z0-9]*#", "", $string); 

當你寫A-z這意味着所有A(ASCII值65)和z(ASCII值122)之間的字符。這包括反引號(ASCII值爲96)以及其他一些您不想要的內容(下劃線,方括號,反斜槓和代字號)。

您也可以使用+而不是*來保存重複用空字符串替換空字符串。

+1

對於鷹眼上的'z' – 2010-07-12 21:21:55

+0

oh ops,我討厭這樣的錯字!感謝您指出! – Eugene 2010-07-12 21:24:13

+1

或使用i標誌區分大小寫:preg_replace(「#[^ a-z0-9] *#i」,「」,$ string); – 2010-07-12 21:25:13

3

我認爲*是不必要的,你可以簡化\W。剛剛嘗試以下操作:

$string = preg_replace("/[\W_]/", "", $string); 

另外,如果你只是想驗證 - 退房ctype_alnum。它避免了RegEx庫的開銷。

+1

這當前允許使用下劃線 - 可以用'\ W | _'或'[\ W_]'作爲表達式來刪除它。 – 2010-07-12 21:26:46

+0

@Peter。下劃線的好處。我已經更新了我的表情。 – 2010-07-13 00:14:59

相關問題