PHP количество экземпляров элементов массива в строке - PullRequest
0 голосов
/ 30 марта 2020

В PHP 7.3:

Учитывая этот массив ключевых слов низкой релевантности ...

$low_relevancy_keys = array('guitar','bass');

и этих возможных строк ...

$keywords_db = "red white"; // desired result 0
$keywords_db = "red bass"; // desired result 1
$keywords_db = "red guitar"; // desired result 1
$keywords_db = "bass guitar"; // desired result 2

Мне нужно знать количество совпадений, как описано выше. Утомительным способом является преобразование строки в новый массив ($keywords_db_array), от l oop до $keywords_db_array, а затем от l oop до $low_relevancy_keys при увеличении числа совпадений. Есть ли более прямой метод в PHP?

1 Ответ

2 голосов
/ 30 марта 2020

Как вы описали в своем вопросе, но с использованием функций array_*:

echo count(array_intersect(explode(' ', $keywords_db), $low_relevancy_keys)); 

(обратите внимание, что вы можете заменить explode на preg_split, если вам нужно быть более гибким)

или с использованием preg_match_all (который возвращает количество совпадений) :

$pattern = '~\b' . implode('\b|\b', $low_relevancy_keys) . '\b~';

echo preg_match_all($pattern, $keywords_db); 

демо

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