PHP preg_按变化顺序匹配单词

PHP preg_按变化顺序匹配单词,php,preg-match,Php,Preg Match,假设我有一个数组(“things and stuff”,“the stuff”)将每个元素与另一个数组的每个元素进行比较-假设第二个数组是(“填充这些废话”,“填充和要做的事情”) 我想preg\u match任何通常相关的东西-我需要它匹配单词相同的元素,即使它们的位置已经改变-本质上我想“stuff”在这种情况下匹配“stuff the…” 最好的办法是什么 您可以简单地拆分第一个数组的字符串,以与第二个数组上的所有字符串值进行比较,示例如下: $array1 = array("things

假设我有一个
数组(“things and stuff”,“the stuff”)将每个元素与另一个数组的每个元素进行比较-假设第二个数组是
(“填充这些废话”,“填充和要做的事情”)

我想
preg\u match
任何通常相关的东西-我需要它匹配单词相同的元素,即使它们的位置已经改变-本质上我想
“stuff”
在这种情况下匹配
“stuff the…”


最好的办法是什么

您可以简单地拆分第一个数组的字符串,以与第二个数组上的所有字符串值进行比较,示例如下:

$array1 = array("things and stuff", "the stuff");
$array2 = array("stuff the blah", "stuff and things to do");

$result = array();

foreach($array1 as $val1){

    $words1 = explode(" ", $val1);

    $result[$val1] = 'not found';

    foreach($array2 as $val2){

        $words2 = explode(" ", $val2);
        $intersect = array_intersect($words1, $words2);
        $diff = array_diff($words1, $intersect);

        if(empty($diff))
            $result[$val1] = 'found';
    }
}

var_dump($result);
参考资料:


这与preg_match无关,我建议将问题改为这样:我有两个字符串数组,我想从两个数组中找到至少包含一个常用词的字符串对。使用
分解
将字符串转换为数组,然后
array\u intersect
检查它们是否包含相同的单词。参见我的示例,就像@Barmar所说的。