PHP如何从字符串中删除非语言字符


PHP how to Remove non-language Characters from a String?

如何删除所有非语言字符?

我想删除下面这样的字符,以及所有其他非语言字符:



我使用这个:

preg_replace("/[^a-z0-9A-Z'-'''|'!'.'?':')'(';'*'"]/u", " ", $text );

这对英语有好处,我需要批准所有的语言字符,如俄语、阿拉伯语、希伯来语、日语。。。

有什么字符串函数可以用来保留所有语言字符吗?

感谢

没有一个正则表达式能完美地满足您的需求——语言和写作太复杂了。但一个近似值可能是

preg_replace('/[^'p{L}'p{M}'p{Z}'p{N}'p{P}]/u', ' ', $text);

这将用一个非Unicode字符的空格替换任何内容,该空格具有属性"字母"、"标记"、"分隔符"、"数字"或"标点符号"之一。

Tim Pietzcker的回答在我的情况下不起作用。

这是有效的。

$after = preg_replace('/[^'w's]+/u','' , $before);