@phpForeve

Как в php найти слово из массива в заданной строке?

Есть строка
$str = 'Привет, меня зовут Владимир. Мне 29 лет'

Есть массивы ключевых слов
$array_hello = ['привет','здарова','хай']
$array_car = ['жигуль','мерседес','ауди']


Нужно отобразить тот массив, в котором есть слово, которое используется в строке.
Сейчас я делаю так.
if(in_array(mb_strtolower(*СТРОКА*), *МАССИВ-1*)) return *МАССИВ-1*;
if(in_array(mb_strtolower(*СТРОКА*), *МАССИВ-2*)) return *МАССИВ-2*;


Это работает, если в строке 100% совпадение.
  • Вопрос задан
  • 7359 просмотров
Пригласить эксперта
Ответы на вопрос 2
sabramovskikh
@sabramovskikh
php.net/manual/ru/function.strstr.php php.net/manual/ru/function.strpos.php можно использовать в цикле
php.net/manual/ru/book.strings.php

И пример со страницы доки
<?php
function strpos_array($haystack, $needles) {
    if ( is_array($needles) ) {
        foreach ($needles as $str) {
            if ( is_array($str) ) {
                $pos = strpos_array($haystack, $str);
            } else {
                $pos = strpos($haystack, $str);
            }
            if ($pos !== FALSE) {
                return $pos;
            }
        }
    } else {
        return strpos($haystack, $needles);
    }
}

// Test
echo strpos_array('This is a test', array('test', 'drive')); // Output is 10
Ответ написан
Комментировать
@tester_toster
Если не ошибаюсь - так как вы хотите не сделать.
Используйте array_filter с preg_match, либо разбейте строку на слова и array_intersect_assoc
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 09:14
5000 руб./за проект
24 апр. 2024, в 09:13
2000 руб./в час