我正在一个关联数组中循环,并试图将整个单词从needle数组匹配到haystack数组中。以下代码运行良好,但返回的结果太多,因为它与字符串的任何出现都匹配:
$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;
}
}
}
我得到一个空数组。让最后一段代码正常工作的任何帮助都将是非常棒的。
谢谢,Greg
您在这里使用了两对分隔符:
$pattern = "'/'b" . $name2 . "'b/i'";
||
1|
2
使用/
或'
我认为单引号是多余的,是仓促复制的结果;粘贴。
此外,内容/单词的preg_quote
(如果可能包含其中之一)。
正如埃利亚斯所指出的那样;下一个陷阱可能是尝试使用长内容变量作为搜索参数。如果不给变量提供无意义的枚举名称,这将是一个明显的错误。
其中只有一个可能是实际的单词或名称。另一个应该被称为内容或其他东西:
$word = $o->name;
$textcontent = $o2->name;
从今以后使用这些
同时,还要相应地修复对象特性命名。
这真的非常简单。由于php中的一些怪癖,stristr
语法如下:
stristr($haystack,$needle);
而CCD_ 5的第一个自变量起到了针的作用。示例:
$name1 = 'name of chief object';
$name2 = 'I am a child of name of chief object';
stristr($name2,$name1);//looks for 'name of chief object' in $name2
preg_match('/'b'.$name2.''b/i',$name1);//does the exact oposite