我想从字符串中删除每个字母字符。
但问题是我不知道字母范围,因为它是UTF8字符串。
可以是ENGLISH,ՀԱՅԵՐԵՆ,ქართული,УКРАЇНСЬКИЙ,РУССКИЙ
我经常这样做
$str = preg_replace('/[^a-zA-Z]/', '', $str);
或
$str = preg_replace('/[^\w]/u', '', $str);
但他们都清楚外国人的角色
有什么想法吗?
答案 0 :(得分:9)
使用Unicode character properties:
$str = preg_replace('/\P{L}+/u', '', $str);
答案 1 :(得分:6)
更新:对于Unicode,RegExp将如下所示 [^\p{L}\s]+
(不替换空格)
它将替换所有支持UTF8的非字母字符。
\P{L}+
- 匹配任何非字母符号\p{P}+
- 仅删除标点符号以下是一些有用的参考文档:
答案 2 :(得分:1)
字母的Unicode属性为\pL
,非字母为\PL
$str = preg_replace('/\PL+/u', '', $str);