PHP-从关联数组中匹配整个单词,使用stristr但不使用preg_match


PHP - preg_match whole word from associative array, working with stristr but not preg_match

我正在一个关联数组中循环,并试图将整个单词从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