空间变为空白

时间:2014-03-08 01:49:29

标签: php regex space

以下代码会产生意外结果:

$row = 'one        //There are spaces here
two  ';
$row = explode(PHP_EOL,$row);
$row = $row[0];
preg_match('/( +)$/',$row,$matches);

使用var_dump($matches);时,输出为:

array(0) {
}

但是,它应该是这样的:

array(2) {
    [0]=>string(8) "        "
    [1]=>string(8) "        "
}
  • PHP_EOL替换"\n"没有任何区别。
  • 使用preg_match('/(\s+)$/',$row,$matches);会产生预期结果:

    array(2) {
        [0]=>string(8) "        "
        [1]=>string(8) "        "
    }
    
  • 使用时也会出现预期:

    $row = 'one        ';
    preg_match('/( +)$/',$row,$matches);
    

但是,显然,这两者都有自己的理由不被使用。

我的问题是:为什么PHP不能将空格识别为空格而只是空格?

示例: http://sandbox.onlinephpfunctions.com/code/a6f3ea8b422671d86a37b765986395b1dd6f94e8

1 个答案:

答案 0 :(得分:2)

您需要使用"\n\r"代替PHP_EOL或空格

$row = explode("\n\r",$row);
$row = $row[0];
preg_match('/( +)$/',$row,$matches);

现在,如您所见,您可以在模式中使用regExp

中的空格