我正在循环访问一个关联数组,并尝试将来自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