Допустим, есть строка:
привет меня зовут Крокодил Гена, я потерял чебурашку
Есть массив: $arr = array('Гена', 'потерял');
Как можно с помощью функции in_array() или же регулярных выражений (я не знаю как правильнее в данной ситуации) найти совпадение в данной выше строке, хотя бы с одним словом в массиве $arr?
Используйте функцию strpos():
<?php
$string = 'привет меня зовут Крокодил Гена, я потерял чебурашку';
$arr = array('Гена', 'потерял');
for ($i = 0; $i < count($arr); $i++) {
if (strpos($string, $arr[$i]))
echo 'Слово ' . $arr[$i] . ' найдено в строке';
}
Либо можно реализовать это через регулярные выражения, функцией preg_match():
if (preg_match("/$arr[$i]/", $string)) {
echo 'Слово ' . $arr[$i] . ' найдено в строке';
}
В вопросе указано про функцию in_array(). В таком случае, нужно разделить строку на массив, потому что данная функция работает лишь с массивами. Сделаем это через функцию preg_split(), так как в строке могут присутствовать и запятые, а в таком случае проще сделать через regex.
<?php
$string = 'привет меня зовут Крокодил Гена, я потерял чебурашку';
$string = preg_split("/[\s,]+/", $string);
$arr = array('Гена', 'потерял');
for ($i = 0; $i < count($arr); $i++) {
if (in_array($arr[$i], $string))
echo 'Слово ' . $arr[$i] . ' найдено в строке';
}
Я бы использовал первый пример, потому что он проще для понимания и реализации.
Самый изящный и, скорее всего, самый быстрый вариант провернуть такое - это сделать простенькую проверку шаблона (регулярного выражения):
<?php
$subject = 'привет меня зовут Крокодил Гена, я потерял чебурашку';
$pattern = '/'.implode('|', array('Гена', 'потерял')).'/';
$matches = array();
print_r($pattern);
echo 'Result: '.preg_match_all($pattern, $subject, $matches)."\n";
print_r($matches);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости