Preg 将 utf8 字符集问题替换为 à



我试图在换行符,空格和其他字符之后添加一个特殊字符串'|||'。我这样做是因为我想把文本分割成一个数组。所以我想这样写:

$result = preg_replace("/<br>/", "<br>|||", preg_replace("/s/", " |||", preg_replace("/r/", "r|||", preg_replace("/n/", "n|||", preg_replace("/’/", "’|||", preg_replace("/'/", "'|||", $text))))));
$result = preg_split("/[|||]+/", $result);

它适用于除包含字符的字符以外的所有单词。它被"代替。我敢肯定问题就在这里,因为我的字符串$text显示字符

由于您的模式处理Unicode字符串,因此传递/u修饰符

同样,您不需要那么多链接的regex替换,将第一个模式分组并在替换中使用反向引用。

使用

preg_replace("/(<br>|[s’'])/u", "$1|||", $text)

注意s匹配空格、回车和换行符。

:

  • (<br>|[s’']) -组1捕获a
    • <br> -字符序列
    • | -或
    • [s’'] -空格,'

查看PHP演示:

$text = "Voilà. C'est vrai.";
echo preg_replace("/(<br>|[s’'])/u", "$1|||", $text);

最新更新