PHP поиск слова в строке

PHP поиск слова в строкеОчень часто возникает необходимость найти слово в строке методами PHP. Причины для этого могут быть совершенно разные. Для опытного веб-программиста эта задача не вызывает затруднений, однако у начинающих разработчиков могут возникнуть серьезные трудности.

В одной из самописных форм обратной связи я решил добавить проверку текстового поля на содержание слова «href», так как через эту форму регулярно поступал ссылочный спам с множеством таких элементов. href, как вы уже поняли — это фрагмент html кода, который спам-бот пытается внедрить на страницу сайта, но лишь огорчает меня спамом, который сыпется на емайл.

Итак искать «href» мы будем средствами регулярных выражений. Не буду вдаваться в подробности и забивать вам голову теорией и возможностями регулярных выражений. Просто решу конкретную задачу.

Поиск слов и наборов символов в строке осущесвляется с помощью функции preg_match.

Составим проверку:

if(preg_match(«/href/i»,$message))
die(«Убей себя об стену, спаммер»);
else {

/* выполняем скрипт дальше */

}

В указанном выше примере сообщение $message проверяется на наличие фрагмента «href» и если находит его — прерывает выполнение скрипта. Под действие этого условия попадут все комбинации, включая просто «href» и «href=». Т.е. не имеет значение есть ли символы до и после комбинации «href».

Иногда бывает нужно найти именно СЛОВО, а не фрагмент строки как у меня в примере. В этом случае нужно изменить наше условие на такое:

if(preg_match("/\bhref\b/i",$message))

Т.е. добавить перед href и после него символы «\b«. Этот символ обозначает границы слова. Т.е. если мой скрипт будет работать с этим условием, а не с первым, то под действие скрипта попадут только комбинации «href», отделенные от остальной строки пробелами, разрывами строк и прочее, а «href=» уже не подпадет под это условие.

Оставьте комментарий