用于删除多语言字符串上的特殊字符的正则表达式

时间:2014-04-29 18:14:14

标签: php regex preg-replace

建议删除特殊字符的最常见正则表达式似乎是这个 -

preg_replace( '/[^a-zA-Z0-9]/', '', $string );

问题是它还删除了非英文字符。

是否有正则表达式删除所有语言的特殊字符?或者唯一的解决方案是明确匹配每个特殊字符并删除它们?

2 个答案:

答案 0 :(得分:4)

您可以改为使用:

preg_replace('/\P{Xan}+/u', '', $string );

\p{Xan}就是unicode表的任何字母表中的数字或字母 \P{Xan}只是一个数字或字母。它是[^\p{Xan}]

的快捷方式

答案 1 :(得分:3)

您可以使用:

$string = preg_replace( '/[^\p{L}\p{N}]+/u', '', $string );