如何删除所有非语言字符?
我想删除下面这样的字符,以及所有其他非语言字符:
我使用这个:
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);