我正在尝试添加特殊字符串'|||'在换行,空白和其他角色之后。我这样做是因为我想将文本拆分成数组。所以我想这样做:
$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à。
答案 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);