2017-08-23 131 views
1

我有2个数组。一个关键字错误,另一个关联网站名称。从一个数组中检索关键字与另一个数组的值 - php

$bad_keywords = array('google', 
         'twitter', 
         'facebook'); 

$sites = array('youtube.com', 'google.com', 'm.google.co.uk', 'walmart.com', 'thezoo.com', 'etc.com'); 

简单的任务:我需要通过$sites阵列过滤器和过滤任何值包含是在$bad_keywords数组中的所有关键字。在它的最后,我需要一个干净的值的数组,我根本找不到任何bad_keywords。

我已经在网上搜索,似乎无法找到一个简单的解决方案。下面是我尝试了好几种方法:使用2个foreach循环
1.(感觉慢 - 我想利用内置PHP函数会加快)
2. array_walk
3. array_filter

但我还没有设法确定最好,最有效的方法。我希望有一个工具可以根据可能长达1公里的关键字列表筛选20k +网站列表,因此性能非常重要。另外,在这种情况下,实际搜索的更好方法是什么 - regexstrpos

还有什么其他的选择来做到这一点,什么是最好的方法?

+0

你的预期输出 –

+0

@ArunKumaresh输出:过滤$网站阵列(即不包含任何元素bad_keyword被发现在它的价值内) – Ben

回答

2
使用 preg_grep功能

简短的解决方案:

$result = preg_grep('/'. implode('|', $bad_keywords) .'/', $sites, 1); 
print_r($result); 

输出:

Array 
(
    [0] => youtube.com 
    [3] => walmart.com 
    [4] => thezoo.com 
    [5] => etc.com 
) 
相关问题