2014-02-26 192 views

回答

2

您可以使用包含字母,數字和下劃線的的Xwd字符類:

$url = preg_replace('~\P{Xwd}+~u', ' ', $url); 

如果你不想下劃線,你可以使用克桑

\p{Xwd}(Perl的單詞字符)是一個預定義的字符類,\P{Xwd}是這個類的否定。

u修飾符表示必須將字符串視爲unicode字符串。

等價:

\p{Xan}  <=>  [\p{L}\p{N}] 
\p{Xwd}  <=>  [\p{Xan}_] 
+0

你能解釋一下這個正則表達式嗎?這似乎是我的工作,我正在測試它。 – UFO

+1

+1,我不知道'Xwd'屬性。 – Toto

+1

@ M42:謝謝,所有的祕密都在這裏:http://pcre.org/pcre.txt –

2

使用Unicode屬性:

$url = preg_replace("/[^\p{L}\p{N}_]+/u", " ", $url); 

\p{L}代表任何字母
\p{N}代表任何數字。

+0

其返回此:----------------- for $ url = preg_replace(「/ [^ \ p {L} \ p {N} _] + /」,「 - 」,$ url); – UFO

+0

必須是「/ [^ \ p {L} \ p {N} _] +/u」,但我不確定這兩個答案之間有什麼區別。 – UFO

+0

@UFO:是的,我忘了處理unicode的'/ u'修飾符。 – Toto