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

mot*_*ioz 0 php regex string preg-replace

我怎样才能删除所有非语言字符?

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

??
Run Code Online (Sandbox Code Playgroud)

我用这个:

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

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

是否有任何字符串函数可用于保留所有语言字符?

谢谢

Tim*_*ker 11

没有正则表达式可以满足您的需求 - 语言和写作对此来说太复杂了.但近似可能是

preg_replace('/[^\p{L}\p{M}\p{Z}\p{N}\p{P}]/u', ' ', $text);
Run Code Online (Sandbox Code Playgroud)

这将替换任何不是Unicode字符的空格,其中包含"letter","mark","separator","number"或"punctuation"属性之一.