如何在 PHP 中正确使用正则表达式从 UTF8 字符串中删除重复的空格字符?

5
我将尝试使用正则表达式在PHP中从UTF8字符串中删除重复的空格字符。 这是正则表达式:
    $txt = preg_replace( '/\s+/i' , ' ', $txt );

通常情况下,它工作得很好,但是一些字符串中有西里尔字母“Р”,在替换后被破坏了。 经过小的调查,我意识到该字母被编码为\x{D0A0},由于\xA0在ASCII中是不间断的空格,因此正则表达式将其替换为\x20,字符就不再有效了。

在PHP中使用正则表达式如何正确解决这个问题?

2个回答

5

尝试使用u修饰符:

$txt="UTF 字符串 with 空格符號";
var_dump(preg_replace("/\\s+/iu","",$txt));

输出:

string(28) "UTF字符串with空格符號"

这个真的救了我的一天,我一直无法去除   - Rvanlaak

4

非常感谢 asciimooPasserby。我在手册中肯定错过了这个。 - anandr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接