这个问题与使用 preg_split 而不是 split非常相似,但我对正则表达式有一些困惑,我想澄清一下。
尝试更新一些现有的 split() 函数以使用 preg_split() ,但我得到了一些不清楚的结果。运行下面的代码会给我不同长度的数组,我不知道为什么。
据我所见, split 与 \n 预先匹配可能的 \r 。而且我认为 preg_split 也在做同样的事情,但是为什么它会创建 2 个拆分?这与惰性/贪婪匹配有关吗?
演示代码:
$test = "\r\n";
$val = split('\r?\n', $test); //literal interpretation of string
$val_new = split("\r?\n", $test); //php understanding that these are EOL chars
$val2 = preg_split('/\r?\n/', $test);
var_dump($val); // returns array(1) { [0]=> string(2) " " }
var_dump($val2); // returns array(2) { [0]=> string(0) "" [1]=> string(0) "" }
编辑:根据 Kolinks 评论在 $val_new 中添加,因为它们有助于澄清我对问题的理解,因此也可能对其他人有用