Preg用à

时间:2016-11-08 18:53:07

标签: php character-encoding preg-replace

我正在尝试添加特殊字符串'||​​|'在换行,空白和其他角色之后。我这样做是因为我想将文本拆分成数组。所以我想这样做:

$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显示了charà。

1 个答案:

答案 0 :(得分:1)

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

此外,您不需要这么多链式正则表达式替换,将第一个模式分组并在替换中使用反向引用。

使用

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

请注意\s匹配空格,回车符和换行符。

<强>详情:

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

请参阅PHP demo

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