2010-07-27 96 views
0

我已經建立了基於以下變量$行:PHP字符串變量

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 .= '&&'; 
} 
} 

我有一個叫$線的功能。一旦調用,回聲$線產生以下輸出:

preg_match("/^ab/i",$row[RG])&&preg_match("/^cd/i",$row[EX]) 

我試圖使用$行變量中的一個,如果循環和的preg_match不起作用。但是,如果我要在if語句中複製並粘貼$ line的值,它的工作原理就很好。任何輸入將不勝感激!

+0

你能將代碼格式化爲代碼嗎?這會讓閱讀變得更容易。 – 2010-07-27 04:33:56

+0

另外,你是什麼意思,你有一個函數,調用「$行」? $行似乎是一個字符串,而不是一個函數。 – 2010-07-27 04:34:59

+0

嗨!我的意思是我將$ line傳遞給一個函數,該函數在腳本中稍後對$ row [RG]&$ row [EX]調用mssql存儲proc返回值。問題在於,如果在$ if語句之一中使用$行,preg_match不起作用,但是,如果我要複製並粘貼$ line的值(即preg_match(「/^ab/i」,$ row [RG])&& preg_match(「/^cd/i」,$ row [EX]))到相同的if語句中,它工作得很好。非常感謝您的幫助! – Don 2010-07-27 04:44:06

回答

4

這裏是一個替代解決方案premisos可能會更好:

$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失敗,這一切失敗,就沒有必要繼續下去。

+0

啊,是的,這是更好,更安全。好一個。 – 2010-07-27 04:50:34