2014-02-07 44 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