Определить, есть ли слово в массиве php

241
13 апреля 2017, 19:55

Дана случайная строка, пример

$str = "Один два три четыре пять";

Есть заданный массив

$array[0] = array('яблоко', 'четыре', 'кактус');

Задача, проверить, есть ли в строке $str слово, которое совпадает с элементом массива $array[0]. Желательно без циклов, если возможно. Если невозможно, то как можно оптимизированее для большого трафика.

Сейчас код такой

if (in_array(mb_strtolower($str), $array[0])) {
    //true
}

Но такой код сверяет всю строку с массивом. Первое что приходит в голову: разбить строку через explode(), и потом проверять каждое слово циклом через in_array. Но боюсь это все повиснет при большом потоке, может есть какая либо функция, для моей задачи?

Answer 1

Есть вариант использовать функцию array_intersect, если результат функции будет пустой значит совпадений нет, если нет - значит совпадения есть, но перед этим строку через explode по пробелу превратим в массив:

$array[0] = array('яблоко', 'четыре', 'кактус');
$str = "Один два три четыре пять";
if (array_intersect(explode(' ', $str), $array[0])) {
    echo 'Совпадение есть';
}
else {
    echo 'Совпадений нет';
}

Выведет что совпадения есть.

Answer 2
$str = mb_strtolower($str);
foreach ($array[0] as $word) {
    if (strpos($str, $word) >= 0) {
        //слово есть
        break;
    } 
}
Answer 3
<?php
 $str = "Один два три четыре пять";
 $array[0] = array('яблоко', 'четыре', 'кактус');
 $boo = "Ни один элемент массива не обнаружен в строке";
 foreach($array[0] as $search){
 $pos = strpos($str, $search);
 if ($pos !== false) {
    $boo = "Элемент '$search' найден в строке '$str'";
    break;
  }
}
 echo $boo;
?>
READ ALSO
Проверка на наличие записи MySQL &amp; PHP

Проверка на наличие записи MySQL & PHP

Имеется php файл который выводит название городовНужно сделать так, что бы перед выводом информации шла проверка на наличие записи в БД

452
starter-kit glide 500 ошибка

starter-kit glide 500 ошибка

Использую стартер-кит и в нем glideНо при заливке на продакшен появилась ошибка 500 при загрузке картинок src="http://site

238
Как сделать вывод, как в VK

Как сделать вывод, как в VK

Помогите сделать вывод сообщений как в диалоговом окне в VK( не по стилю, а по функционалу),что бы выводило сообщения по времени(вместо его...

204