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

PHP-preg_匹配关联数组中的整个单词,使用stristr但不使用preg_匹配,php,regex,arrays,foreach,preg-match,Php,Regex,Arrays,Foreach,Preg Match,我在一个关联数组中循环,试图将整个单词从针数组匹配到haystack数组中。以下代码工作正常,但返回的结果太多,因为它匹配字符串的任何出现: $result = array(); $name1 = array(); $name2 = array(); foreach($object->organizations as $o) { foreach($objectCrunch as $o2) { $name1 = $o->name; $name2

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

您在此处使用的是两对:

使用
/
'

我认为单引号是多余的,是匆忙复制和粘贴的结果

此外,如果内容/单词可能包含以下任一内容/单词:


正如埃利亚斯指出的那样;下一个陷阱可能是试图使用long content变量作为搜索参数。如果不给变量提供无意义的枚举名称,这将是一个明显的错误

其中只有一个可能是实际的单词或名称。另一个应称为内容或其他内容:

    $word = $o->name;
    $textcontent = $o2->name;
从今往后使用这些工具。

同时,也相应地修复对象属性命名。

这非常简单,真的。由于php中的一些怪癖,
stristr
语法如下:

stristr($haystack,$needle);
preg_match
的第一个参数就像一根针。例如:

$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

尝试替换
$pattern=“”/\b”$姓名2。“\b/i”带有
$pattern=“”/\b”。预报价($name2)。“\b/i”服务器错误。。。我认为$pattern字符串不是问题所在。我想问题是我的正则表达式是否正确。您的
$pattern
字符串正在形成一个正则表达式,因此两者是一个。如果
$name2
包含任何我们不希望计算的特殊正则表达式字符,例如句号、星号或加号,则
preg_quote
也将是必需的。祝您好运,但问题不是比这更根本吗?ie:haystack->Pineder vs pattern->Strings这是我的观点,OP使用
stristr
调用中的haystack作为模式,以匹配$name1变量是的,你是对的
$name2
确实是一个大草堆,因此它不会作为preg_match的搜索参数(在任何正则表达式变量中)。-因此,如果有什么不同的话,那就是如何不给出无表达式变量名。
$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