PHP中的部分匹配in_array()

时间:2014-01-27 04:56:23

标签: php arrays

我正在尝试在数组中搜索单词(区域)列表。

但有时候数组中的单词(区域)是2个单词。

,即在阵列中是“米尔顿凯恩斯”,所以“弥尔顿”不匹配

有没有办法可以做到这一点,没有拆分数组中的任何双字(因为我认为这将是服务器上的一个很大的负载)

下面是我正在做的一个例子

foreach (preg_split("/(\s)|(\/)|(\W)/", $words) as $word){                  
    if (in_array($word, $areaArray)){
       $AreaID[] = array_search($word, $areaArray);
    }
}

感激,一如既往的建议!

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来查找值,这类似于MySQL的函数

$search='Milton Keynes';
foreach ($areaArray as $key => $value) {
 if (preg_match('~'.preg_quote($search).'~i',$value)) {
    echo "$key";
 }
}

答案 1 :(得分:0)

您可以使用preg_grep()

$re = sprintf('/\b%s\b/', preg_quote($search, '/'));
// ...
if (preg_grep($re, $areaArray)) {
    // we have a match
}

您可以选择通过添加/i修饰符来使匹配大小写不敏感。