【发布时间】:2012-04-23 16:14:03
【问题描述】:
这个问题与use preg_split instead of 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 cmets 的 $val_new 中添加,因为它们有助于澄清我对问题的理解,因此也可能对其他人有用
【问题讨论】:
标签: php regex preg-split