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

时间:2012-01-25 11:27:32

标签: php regex string preg-replace

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

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



我用这个:

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

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

我可以使用任何字符串函数来保留所有语言字符吗?

感谢

2 个答案:

答案 0 :(得分:11)

没有正则表达式对于你想要的东西是完美的 - 语言和写作对此来说太复杂了。但近似可能是

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

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

答案 1 :(得分:0)

Tim Pietzcker的答案不适用于我的情况。

这很有效。

$after = preg_replace('/[^\w\s]+/u','' , $before);
相关问题