Найти совпадения
есть некий список совпадений (массив)
Код:
$palletn = array("pidar","suka","loh","hyi");
И есть некая переменная:
Код:
$variable = "Privet loh, kak dela??";
мне нужно прогнать переменную $variable, на соотвествие шаблону $palletn
и если есть совпадение, хоть по одному слову - выдать какойто текст!
как реализовать???
тоесть совпадение по 1 слову проблем не возникает :), а вот чтобы так шаблоном прописать через запятую - уже не получается :(
Разбить на части и проверять в массиве наличие каждого слова... метод тупой - первое что пришло в голову после 12 часового рабочего дня
Код:
<?php
$pattern = array('pidar', 'suka', 'loh', 'hyi');
$variable = "Privet loh, kak dela??";
$words = preg_split('/[ ,\.!?]/', strtolower($variable));
$intersection = array_intersect($words, $pattern);
if (count($intersection) > 0)
echo 'Warning! Кто-то некультурный рядом!';
?>
$pattern = array('pidar', 'suka', 'loh', 'hyi');
$variable = "Privet loh, kak dela??";
$words = preg_split('/[ ,\.!?]/', strtolower($variable));
$intersection = array_intersect($words, $pattern);
if (count($intersection) > 0)
echo 'Warning! Кто-то некультурный рядом!';
?>
Интересно что будет быстрее работать - этот вариант или со строковыми функциями...
Alexander92 Спасибо. Замерил скорость выполнения, меня устраивает :)
Код:
if (preg_match('/pidar|suka|loh|hyi/', $variable)) print "есть совпадение";
Если входящие данные обязательно в массиве - можно их заджойнить в regexp
Код:
$variable = "Vasya hodit v lohmot'yah.";
Формально подстрока "loh" сюда входит, но не является словом.