PHP的preg_replace我輸入的搜索使用preg_replace
,但是我希望我的搜索輸入接受別人的語言多語言
保持 - 中國人,日本人,德國..等
刪除 - 符號性格像@#$%^ *()的
這一個只保留英語preg_replace("/[^a-zA-Z0-9]+/", "", $search);
任何方式來設置FO多語言?
PHP的preg_replace我輸入的搜索使用preg_replace
,但是我希望我的搜索輸入接受別人的語言多語言
保持 - 中國人,日本人,德國..等
刪除 - 符號性格像@#$%^ *()的
這一個只保留英語preg_replace("/[^a-zA-Z0-9]+/", "", $search);
任何方式來設置FO多語言?
這裏的PHP unicode regex reference。加+
是沒有必要的,因爲PHP將通過串循環。 \s
將匹配所有空白字符。
preg_replace("![^\p{L}\p{N}\s]!", "", $search);
如果你想只匹配空格字符本身,你會在括號內添加它作爲文字:
preg_replace("![^\p{L}\p{N} ]!", "", $search);
更新補充一點關於根據註釋請求空間
雖然對於Java,簡要概述here。
可以使用所謂的Posix的符號:
[^\p{Alnum}\p{M}]
首先是字母數字組,第二個的組合變音標記:口音。 後者不應忘記,因爲人們可以寫ĉ
爲一體的Unicode點c-抑揚,也可作爲「C」後面是組合用circumflex ^
(零寬度,這裏由正常抑揚表示)。在某些語言中,基本字母有多個標記。
更正:
[^\p{L}\p{N}\p{M}]
對於相同的PHP的參考文獻:http://www.php。 net/manual/en/regexp.reference.unicode.php –
所以,你想保留什麼*做什麼,你想要刪除什麼?使用黑名單而不是白名單會更容易嗎? – deceze
爲了正則表達式/ PHP中,'æ'是儘可能多的Unicode字符爲'^'的。你最好打賭它作出黑名單,並簡單地取而代之。 ('的preg_replace( 「/ [!\」 #¤%&\(\)= /] +」, 「」,$搜索);') – h2ooooooo