如何使正则表达式删除所有特殊字符(?。= +等),但应该允许中文/日文/韩文字符

时间:2010-07-14 12:01:33

标签: php regex

中文/日文/韩文字符是双字节或Unicode。

2 个答案:

答案 0 :(得分:3)

以下正则表达式应该有效; \p{P}匹配标点和\p{S} matches symbols

preg_replace("/\p{P}|\p{S}/u", "", $s);

我无法测试它,因为我的pcre不支持\p\x等。我收到了错误:

  

PHP警告:preg_replace():编译失败:第3行test.php中的偏移量1尚未编译\P\p\X的支持< / p>

如果您收到此错误,请转到此页describes a fix

答案 1 :(得分:1)

mb_ereg函数实现了多字节感知的正则表达式。但是,您确实需要更准确地指定“特殊字符”的含义。

编辑:我认为您需要的是PCRE支持的Unicode character classes,但我不确定mb_ereg函数是否支持这些函数或者preg函数是否支持多字节字符串。