От автора: иногда забудешь какое-нибудь слово во время разговора, а потом мучаешься, что сказал не все и не полностью. Вроде, как многое осталось «за кадром». Вот если можно было бы создать какую-нибудь программную «напоминалку». Но тогда нам потребуется реализовать PHP поиск в тексте, чтобы вспомнить забытое.
Зачем что-то искать?
Искать в тексте приходится при реализации различных программных решений, связанных с валидацией содержания публикаций. Это требуется, если нужно проверить правильность заполнения полей формы, анкет и остальных документов.
Другой распространенный случай, когда нужно осуществить поиск текста в файле PHP, связан с созданием различных парсеров. Например, все программы проверки уникальности контента в том или иной мере используют внутритекстовый поиск для нахождения копий и плагиата.
Также подобный функционал может пригодиться редакторам. Чаще всего редактуре сайтов приходится проверять, все ли ключевые слова использовал копирайтер.
Поможем редактуре!
В чем соль! Есть у меня один редактор знакомый. Он мучается, когда авторы скидывают ему много статей. Из-за этого редактор просиживает дни и ночи, проверяя в них наличие ключевых запросов. Давайте (программным путем) поможет ему вершить свой нелегкий труд. Для этого мы напишем специальную функцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php function check_string($stroka, $key) { foreach($key as $k) { if(strpos($stroka, $k) !== false){ $a++; echo "$a ключевик есть в тексте"."<br />"; } else { $a=$a+1; echo "$a ключевика нет в тексте"."<br />"; } } } ?> |
Вкратце поясню, как здесь происходит поиск слов в тексте PHP. Функция принимает в качестве параметров текст и перечень ключей (массив). Переборка текста происходит с помощью цикла foreach. Для поиска элемента массива (ключа) применяем встроенную функцию strops(). Сразу отмечу, что она является регистрозависимой и при отсутствии совпадений возвращает false. На этом и построена работа проверки if else
Также внутри цикла объявлена переменная a, которая является маркером для фиксирования того, какой элемент массива по счету найден в тексте, а какой нет. Теперь проверим работоспособность созданной функции. Вызовем ее и передадим функции входящие значения:
1 2 3 4 5 6 7 |
<?php $stroka = 'Иногда забудешь какое-нибудь слово во время разговора, а потом тебя преследует чувство того, что сказал не все и не полностью. Вроде, как многое осталось «за кадром». Вот если можно было создать какую-нибудь программную «напоминалку». Но тогда нам потребуется PHP поиск в тексте, чтобы вспомнить забытое.'; $key = array('PHP поиск','не','какое-нибудь слово', 'Батарея'); check_string($stroka,$key) ?> |
Примерно таким же образом можно реализовать PHP поиск символа.
Ищем гиперссылки!
Ссылки являются важной составляющей любой веб-страницы. Их качество может влиять на результаты ранжирование. Присутствие ссылок может расцениваться поисковыми системами как спам.… В общем, осуществлять анализ разметки на присутствие тега <a> нужно. Не будем перечислять все случаи.
Чаще всего в Сети можно наткнуться на вариант реализации, в котором для парсинга HTML кода используются регулярные выражения. Но это не всегда приемлемо и с ними много мороки. Чтобы осуществить PHP поиск ссылок в тексте, я предлагаю использовать возможности объектного представления документа. Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $html = '<a href="//webformyself.com/bluzhdaem-v-dremuchem-lesu-ili-kak-v-php-sozdat-bazu-mysql/">First link</a> <p> Иногда забудешь какое-нибудь слово во время разговора, а потом тебя преследует чувство того, что сказал не все и не полностью. Вроде, как многое осталось «за кадром». </p> <a href="//webformyself.com/php-poisk-v-stroke-obzor-dostupnogo-instrumentariya/">Second link</a>'; $dom = new DOMDocument; $dom->loadHTML($html); $razmetka = $dom->getElementsByTagName("a"); foreach ($razmetka as $cod) { echo $cod->nodeValue." "; echo $cod->getAttribute('href')."<br>"; echo "<br>"; } ?> |
Ну, а для поиска даты в тексте PHP – регулярные выражения как раз и пригодятся. Но это мы оставим на следующий раз. Иначе с такими объемами «поглощаемой» информации можно забыть и свое имя, и фамилию. Кстати, вы, случайно не помните, как меня зовут? :).
Комментарии (4)