2017-08-23 132 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 
) 
相關問題