我正在循環訪問一個關聯數組,並嘗試將來自needle數組的整個單詞匹配到haystack數組中。下面的代碼工作完美,但因爲它的匹配字符串的任意次數返回過多的結果:PHP - preg_match關聯數組中的整個單詞,使用stristr但不使用preg_match
$result = array();
$name1 = array();
$name2 = array();
foreach($object->organizations as $o) {
foreach($objectCrunch as $o2) {
$name1 = $o->name;
$name2 = $o2->name;
if(stristr($name2, $name1)) {
$result[] = $o2->permalink;
}
}
}
當我嘗試下面的代碼:
$result = array();
$name1 = array();
$name2 = array();
foreach($object->organizations as $o) {
foreach($objectCrunch as $o2) {
$name1 = $o->name;
$name2 = $o2->name;
$pattern = "'/\b" . $name2 . "\b/i'";
if(preg_match($pattern, $name1)) {
$result[] = $o2->permalink;
}
}
}
我得到一個空數組。獲得最後一段代碼的任何幫助都很好。
感謝, 格雷格
嘗試更換'$ pattern =「'/ \ b」。 $ name2。 「\ b/i'」;'用'$ pattern =「'/ \ b」。 preg_quote($ name2)。 「\ b/i'」;' – nickb 2012-07-10 16:42:37
服務器錯誤...我不認爲$模式字符串是問題。我認爲問題是我的正則表達式是否正確。 – Greg 2012-07-10 16:47:24
你的'$ pattern'字符串正在形成一個正則表達式,所以兩者是相同的。 – nickb 2012-07-10 16:49:38