如何在PHP中用UTF-8支持替换所有非字母字符

2022-08-07 00:00:00 regex utf-8 php preg-replace
我要从字符串中删除所有非字母字符。问题是我不知道字母范围,因为它是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

相关文章