2014-02-07 79 views
0

我想保持這種字母和數字的字符串PHP串了preg_replace,保持奇怪的字母和數字

  • AAO和其他奇怪的字母
  • AZ和其他正常字母
  • 123等數字

我不希望這

  • ##¤&#!,_-和其他奇怪的字符

代碼

$content = preg_replace("???", "", $string); 
+1

請更清楚地定義「其他奇怪的字符」是什麼。你可能會談論成千上萬個可能的角色。 – deceze

+0

@deceze是的,禁止所有不是數字或字母的數千個字符。 –

+2

它是UTF-8編碼輸入嗎? '$ content = preg_replace('/ [^ \ p {L} \ p {N}]/u',「」,$ string);'可以這樣做。 –

回答

5

您可以使用強尼5方法包括寫你所需要的所有字符在角色類中。您可以使用預定義的類\p{Latin}包含所有的拉丁字母(和accentued字母太):

$content = preg_replace('~[^\p{Latin}0-9]+~u', '', $string); 

如果你希望所有的信件或「世界」位數:

$content = preg_replace('~\P{Xan}+~u', '', $string); 
+0

也許偏移主義,但我怎麼能白帽一些字符,例如空格,減號和逗號? –

4

耶爲Unicodecharacter classes

$content = preg_replace("/[^\p{L}\p{N}]+/u", "", $string); 
  • \p{L}匹配任何Unicode字母。
  • \p{N}與任何Unicode數字匹配。
  • [^\p{L}\p{N}]匹配任何既不是字母也不是數字的字符。
+1

+1請注意,這還包括例如「漢字」。不確定OP喜不喜歡。 – deceze