ГлавнаяСофтСпонсорыСсылкиКонтакты

 

 

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=" уже не подпадет под это условие.