2

我环顾四周,但似乎找不到任何需要的东西。

假设我在一个函数中有 2 个数组,但是它们是完全动态的。因此,每次运行此函数时,都会根据已提交的页面创建数组。

我需要一些如何匹配这些数组并查找两者中出现的任何短语/单词。

示例:(每个数组中只有一个元素)

    Array 1: "This is some sample text that will display on the web"
    Array 2: "You could always use some sample text for testing"

所以在那个例子中,两个数组有一个在每个数组中出现完全相同的短语:“Sample Text”

所以看到这些数组总是动态的,我无法做任何像 Regex 这样的事情,因为我永远不会知道数组中会有什么单词。

4

4 回答 4

4

您可以在这样的字符串数组中找到所有单词:

function find_words(array $arr)
{
        return array_reduce($arr, function(&$result, $item) {
                if (($words = str_word_count($item, 1))) {
                        return array_merge($result, $words);
                }
        }, array());
}

要使用它,您可以通过以下方式运行最终结果array_intersect

$a = array('This is some sample text that', 'will display on the web');
$b = array('You could always use some sample text for testing');

$similar = array_intersect(find_words($a), find_words($b));
// ["some", "sample", "text"]
于 2013-05-27T09:16:54.667 回答
1

Array_intersect() 应该为您执行此操作:

http://www.php.net/manual/en/function.array-intersect.php

*array_intersect() 返回一个数组,其中包含所有参数中存在的 array1 的所有值。请注意,密钥被保留。*

于 2013-05-27T09:14:16.067 回答
0

maybe something like this:

foreach($arr as $v) {
   $pos = strpos($v, "sample text");
   if($pos !== false) {
        // success
   }

}

here is the manual: http://de3.php.net/manual/de/function.strpos.php

于 2013-05-27T09:12:55.360 回答
0

将两个字符串用空格分解,就是比较数组的简单案例。

于 2013-05-27T09:20:34.060 回答