PHP preg_被新行拆分为\R\n
据我所知,以下代码行应在新行(PHP preg_被新行拆分为\R\n,php,regex,pcre,Php,Regex,Pcre,据我所知,以下代码行应在新行(\r、\n和\r\n)处拆分字符串 为什么会这样 var_dump(preg_split("%\R%", "Å")); 输出 array(2) { [0]=> string(1) "▒" [1]=> string(0) "" } 但是 是否按预期工作且不拆分角色?我知道我应该使用“u”修饰符(PCRE_UTF8),因为字符是UTF-8,但是为什么preg_split认为Å(0xC3 0x85)可以包含新行?您还提到Å是0xC3 0x8
\r
、\n
和\r\n
)处拆分字符串
为什么会这样
var_dump(preg_split("%\R%", "Å"));
输出
array(2) {
[0]=>
string(1) "▒"
[1]=>
string(0) ""
}
但是
是否按预期工作且不拆分角色?我知道我应该使用“u”修饰符(PCRE_UTF8),因为字符是UTF-8,但是为什么
preg_split
认为Å(0xC3 0x85
)可以包含新行?您还提到Å
是0xC3 0x85
根据,不使用u
修饰符\R
相当于此原子群:
(?>\r\n|\n|\r|\f|\x0b|\x85)
注意两组中都存在\x85
因此,在
\R
上拆分而不使用u
修饰符会在输出数组中提供一个额外的元素,因为它能够在\x85
上拆分,只给您\xC3
和一个空的结果作为结果数组。您能提供\R
定义的参考吗?关于PCRE的PHP文档页面只说:“匹配\n
、\r
和\r\n
”。PHP文档实际上是不完整的。和新行序列标题下的节。找到引用的可链接版本:。很高兴知道。谢谢,那好多了。我也添加了这个链接来回答问题。正如@anubhava的解释,尽管在中提到了,\x85
字符被PCRE库识别为a。
var_dump(preg_split("%(\r|\n|\r\n)%", "Å"));
(?>\r\n|\n|\r|\f|\x0b|\x85)