如何在PHP中用UTF-8支持替换所有非字母字符
我要从字符串中删除所有非字母字符。问题是我不知道字母范围,因为它是UTF8字符串。
可以是英语,ՀԱՅԵՐԵՆ,ქართული,УКРАЇНСЬКИЙ,РУССКИЙ
我通常这样做:
$str = preg_replace('/[^a-zA-Z]/', '', $str);
或
$str = preg_replace('/[^w]/u', '', $str);
但它们都清除了外来字符。
有什么想法吗?
解决方案
更新:对于unicode,RegExp将如下所示[^p{L}s]+
(不替换空格)
它将用UTF8支持替换所有非字母字符。
P{L}+
-匹配任何非字母符号p{P}+
-仅删除标点符号
以下是一些可能有帮助的参考文档:
- Tutorial on RegExp UTF8
- Unicode character properties
相关文章