как использовать Preg_match для массива (несколько ключей)? - PullRequest
0 голосов
/ 28 марта 2020

например, у меня есть эти несколько ключевых слов

$word = "word1,word2,word3";

и вычесть / взорвать, используя $keyword = explode(",", trim($word));, тогда я получу эти $keyword[0] $keyword[1] и $keyword[2]

сейчас Как сопоставить эти ключевые слова с помощью preg_match?

$others = "this is example where there is word1"; 

if(preg_match('/($keyword[0]|$keyword[1]|$keyword[2])/i', $others)){
echo "matched";
}

проблема в том, что, если есть только 2 слова, оно будет соответствовать всем словам в $others.

есть еще Проще или проще и эффективнее это сделать?

1 Ответ

1 голос
/ 28 марта 2020

Используйте array_intersect () вместе с explode ()

$word = "word1,word2,word3";

$others = "this is example where there is word1"; 


$wordsArray = explode(',',$word);
$othersArray = explode(' ',$others);
if(count(array_intersect($othersArray,$wordsArray)) > 0){
    echo "matched";
}else{
    echo "not matched";
}

Выход: https://3v4l.org/2fiTm И https://3v4l.org/vIrnh

, если вы хотите проверку без учета регистра, используйте strtolower():

$wordsArray = explode(',',strtolower($word));
$othersArray = explode(' ',strtolower($others));
if(count(array_intersect($othersArray,$wordsArray)) > 0){

    echo "matched";
}else{
    echo "not matched";
}

Выход: https://3v4l.org/tgflb

Примечание: - Я предполагаю, что текстовые ($others переменные) слова разделены пробелом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...