建议删除特殊字符的最常见的正则表达式似乎是这样的 -
preg_replace( '/[^a-zA-Z0-9]/', '', $string );
问题是它还删除了非英文字符。
是否有正则表达式删除所有语言的特殊字符?或唯一的解决方案是明确匹配每个特殊字符并删除它们?
你可以改用:
preg_replace('/\P{Xan}+/u', '', $string );
\p{Xan}
就是unicode表的任何字母表中的数字或字母。
\P{Xan}
不是数字或字母。这是[^\p{Xan}]
的捷径
您可以使用:
$string = preg_replace( '/[^\p{L}\p{N}]+/u', '', $string );