代码之家  ›  专栏  ›  技术社区  ›  Ben

根据另一个数组的值搜索一个数组中的关键字-php

  •  1
  • Ben  · 技术社区  · 8 年前

    $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 大堆最后,我需要一个具有干净值的数组,我根本不会发现任何坏的_关键字。

    我在网上搜索了一下,似乎找不到一个简单易行的解决办法。以下是我尝试过的几种方法:
    1、使用2 foreach 循环(感觉较慢-我认为使用内置php函数会加快速度)
    array_walk
    3. array_filter

    但我还没有找到最好、最有效的方法。我想有一个工具,将过滤通过一个20k以上的网站对一个关键字列表,可能长达1k长的列表,所以性能是至关重要的。另外,在这种情况下,什么方法更适合实际搜索- regex strpos ?

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

    1 回复  |  直到 8 年前
        1
  •  2
  •   RomanPerekhrest    8 年前

    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
    )