preg_match允许不需要的行滑过

时间:2015-10-01 15:49:36

标签: php regex preg-match

我正在使用preg_match将条件放在行上,在循环中处理。 这是我的代码:

$import = 'LT_VALUES2';
$contents = explode('-',$import,2);
$line = 'DATA LT_VALUES2 TYPE TABLE OF RGSB4 WITH HEADER LINE,';
if(preg_match('/(DATA $import)/i',$line) == 0 && preg_match("/($import\b|$contents[0]\W)/i",$line) == 1 && preg_match("/[']/",$import) == 0 && preg_match("/(\D)/",$import) == 1)
{

它无缘无故地到达

}

为什么它没有处理我提供的条件?我在phptester.net测试了相同的代码,它按照我想要的方式工作

1 个答案:

答案 0 :(得分:1)

单引号字符串不会插入变量,这可能是您期望它做的。

'/(DATA $import)/i'字面上是/(DATA $import)/i

另一方面;

"/(DATA $import)/i"将插入/(DATA LT_VALUES2)/i