2013-06-12 71 views
0

PHP的preg_replace我輸入的搜索使用preg_replace,但是我希望我的搜索輸入接受別人的語言多語言

保持 - 中國人,日本人,德國..等

刪除 - 符號性格像@#$%^ *()的

這一個只保留英語preg_replace("/[^a-zA-Z0-9]+/", "", $search);

任何方式來設置FO多語言?

+0

所以,你想保留什麼*做什麼,你想要刪除什麼?使用黑名單而不是白名單會更容易嗎? – deceze

+0

爲了正則表達式/ PHP中,'æ'是儘可能多的Unicode字符爲'^'的。你最好打賭它作出黑名單,並簡單地取而代之。 ('的preg_replace( 「/ [!\」 #¤%&\(\)= /] +」, 「」,$搜索);') – h2ooooooo

回答

1

這裏的PHP unicode regex reference。加+是沒有必要的,因爲PHP將通過串循環。 \s將匹配所有空白字符。

preg_replace("![^\p{L}\p{N}\s]!", "", $search); 

如果你想只匹配空格字符本身,你會在括號內添加它作爲文字:

preg_replace("![^\p{L}\p{N} ]!", "", $search); 

更新補充一點關於根據註釋請求空間

+0

如何保持空格?「」 – user2178521

+0

我添加了空格字符匹配'\ s'。 –

+0

Thx很多!真的很感謝! – user2178521

3

雖然對於Java,簡要概述here

可以使用所謂的Posix的符號:

[^\p{Alnum}\p{M}] 

首先是字母數字組,第二個的組合變音標記:口音。 後者不應忘記,因爲人們可以寫ĉ爲一體的Unicode點c-抑揚,也可作爲「C」後面是組合用circumflex ^(零寬度,這裏由正常抑揚表示)。在某些語言中,基本字母有多個標記。


更正:

[^\p{L}\p{N}\p{M}] 
+1

對於相同的PHP的參考文獻:http://www.php。 net/manual/en/regexp.reference.unicode.php –