【发布时间】:2017-12-01 17:11:03
【问题描述】:
据我了解,以下代码行应将字符串拆分为新行(\r、\n 和 \r\n)。
preg_split("%\R%", $str);
为什么会这样
var_dump(preg_split("%\R%", "Å"));
输出
array(2) {
[0]=>
string(1) "▒"
[1]=>
string(0) ""
}
但是
var_dump(preg_split("%(\r|\n|\r\n)%", "Å"));
按预期工作并且不拆分字符?我知道我应该使用“u”修饰符(PCRE_UTF8),因为字符是 UTF-8,但为什么 preg_split 认为 Å(0xC3 0x85)可以包含一个新行?
【问题讨论】:
-
正如@anubhava 的answer 解释的那样,尽管PHP documentation 中提到了什么,但
\x85字符被PCRE 库识别为newline sequence。