我根据以下内容构建了变量$ line:
foreach ($regex as $each){
$parts = explode('::',$each);
$pattern = '"/^'.$parts[1].'/i"';
$subject = '$row['.$parts[0].']';
$line .= 'preg_match'.'('.$pattern.','.$subject.')';
if (end($regex) != $each){
$line .= '&&';
}
}
我有一个调用$ line的函数。一旦调用,echo $ line将产生以下输出:
preg_match("/^ab/i",$row[RG])&&preg_match("/^cd/i",$row[EX])
我试图在其中一个if循环中使用$ line变量,而preg_match不起作用。但是,如果我要在if语句中复制并粘贴$ line的值,它就可以了。任何意见都将不胜感激!
答案 0 :(得分:4)
这是一个替代解决方案,可能更好:
$passed = true;
foreach ($regex as $each){
$parts = explode('::',$each);
$pattern = '/^'.$parts[1].'/i';
$subject = $row['"'.$parts[0].'"'];
if (!preg_match($pattern, $subject)) {
$passed = false;
break;
}
}
if ($passed) {
echo 'Woohoo! It passed!';
}
这可能是首选方法,因为如果一个preg_match失败,那么一切都失败了,没有必要继续。