поиск текста на странице php
PHP поиск в тексте поможет в нелегком труде редакторов
Дата публикации: 2016-12-16
От автора: иногда забудешь какое-нибудь слово во время разговора, а потом мучаешься, что сказал не все и не полностью. Вроде, как многое осталось «за кадром». Вот если можно было бы создать какую-нибудь программную «напоминалку». Но тогда нам потребуется реализовать PHP поиск в тексте, чтобы вспомнить забытое.
Зачем что-то искать?
Искать в тексте приходится при реализации различных программных решений, связанных с валидацией содержания публикаций. Это требуется, если нужно проверить правильность заполнения полей формы, анкет и остальных документов.
Другой распространенный случай, когда нужно осуществить поиск текста в файле PHP, связан с созданием различных парсеров. Например, все программы проверки уникальности контента в том или иной мере используют внутритекстовый поиск для нахождения копий и плагиата.
Также подобный функционал может пригодиться редакторам. Чаще всего редактуре сайтов приходится проверять, все ли ключевые слова использовал копирайтер.
Поможем редактуре!
В чем соль! Есть у меня один редактор знакомый. Он мучается, когда авторы скидывают ему много статей. Из-за этого редактор просиживает дни и ночи, проверяя в них наличие ключевых запросов. Давайте (программным путем) поможет ему вершить свой нелегкий труд. Для этого мы напишем специальную функцию:
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Реализация поиска на сайте через PHP
Многие из Вас скажут, что ничего сложного здесь нет. И будут отчасти правы, однако, давайте разберём такой пример строки поиска: «ищу этот текст«. Встаёт вопрос: «А что, собственно, ищется?«. То ли ищется точное вхождение текста «ищу этот текст«. Или, быть может, ищется текст, где присутствуют все три слова, но которые могут следовать далеко не друг за другом. Или, возможно, ищется текст, где присутствует хотя бы одно из этих слов.
И вот здесь задача значительно усложняется. Можно сделать сложную систему синтаксиса (как в поисковых системах), например, ищется точное вхождение, если запрос задан в кавычках. А можно давать выбор пользователям, как именно они хотят проводить поиск (с помощью radio-кнопок). Таким образом, сделано у меня на сайте. Поэтому в предыдущий алгоритм добавляется ещё один пункт: составление SQL-запрос. Вот пример SQL-запроса, когда нужно вытащить все материалы, в которых имеется хотя бы одно слово из запроса «ищу этот текст«:
SELECT * FROM articles WHERE (`text_article` LIKE «%ищу%» OR `text_article` LIKE «%этот%» OR `text_article` LIKE «%текст%»)
Соответственно, в скрипте поиска Вы должны генерировать подобные SQL-запросы, посылать к базе данных, получать ответ и выводить его. Это всё ещё больше усложняется, если Вы выводите записи по релевантности, так как трудно сразу сказать, что должно быть релевантнее: 3 точных вхождения запроса, либо 10 вхождений частей запроса. У меня на сайте предпочтение всегда отдаётся точным вхожденияи, но этот момент уже достаточно спорен. Безусловно, это сложно, и если это Вы делаете в первый раз, то несколько часов Вы точно потратите. Надеюсь, что мой алгоритм реализации поиска на сайте через PHP Вам поможет.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 56 ):
Михаил а вместо text_article Что ставить? Это адрес столбца? И как потом выводить данные правильно, а то я уже много способов перепробовал, не могу сделать так как нужно.
Михаил а вот если поиск реализуется по таблице users и ищет он только например по колонке name а если человек начинает вводить и фамилию то поиск ступорится и все найти ничего естесственно не может, сейчас у меня завпрос такой : («SELECT * FROM `users` WHERE `name` LIKE ‘%<$user_get>%'»); Пробую сделать вроде бы понятно и логично вот так : («SELECT * FROM `users` WHERE `name` LIKE ‘%<$user_get>%’ AND `familia` LIKE ‘%<$user_get>%'»); Все ровно не хочет искать=((( ЧТо делаю не так Михаил?!
А зачем фигурные скобки здесь: <$user_get>? Попробуйте так: LIKE ‘%$user_get%’
Ваш запрос какой-то не логичный. Как может у человека совпадать имя И фамилия? Поэтому могу предположить, что надо вместо AND поставить OR.
А как тогда формировать запрос на совпадения и имени и фамилии?! Подскажите пожалуйста! Я впервые пишу поисковое ядро по 2м калонкам=( ПРи том что это все обрабатывается на аяксе без перезагрузке страницы=)
так в этом случае будет 2 строки поиска ведь?! А мне нужно чтоб все данные писались в одну поисковую строку!
ДА нет это то я сделал, а вот в самом поле ввода как оно должно распознаватся куда отнести это слово а куда это? К какому столбцу к имени или к фамилии?! у меня идет так xmlhttp.open(«GET», «getuser.php?name=» + str, true); xmlhttp.send(); за str берется 0е значение
Значит, нужно добавить ещё одно поле, чтобы не только name=, но и &surname=
Тогда как это реализованно например в том же контакте все в одной строке?!
ТАк все плывет бошка=) Спасибо вам! На сегодня думаю хватит работы=)
Поиск по контенту сайта php примеры
В самом начале давайте разберемся, где будем искать. Будем искать не только в файлах, но и сделаем поиск по базе данных.
Поиск по сайту php
Алгоритм поиска по сайту
$new = my_strtolower( @file_get_contents(путь до файла)); //получаем файл в строку.
И далее в цикле проверить все файлы или строки в базе на совпадение!
Все просто!
Для данного примера есть архив со скриптом.
Я уже давно не занимался базами данных, поэтому, никак проверить не смогу работоспособность данного скрипта!
НО! Схематично могу набросать, как бы я делал поиск по базе данных сайта.
Берем скрипт вывода из базы данных
Все что внутри цикла while удаляем и туда вставляем:
Ниже скрипта располагаем форму для отправки запроса на поиск оп базе данных:
В самом верху страницы располагаем функцию собственную функцию strtolowermy_strtolower
Следующей строкой получаем данные из формы :
Пропускам данные через my_strtolower:
Скачать скрипт поиска по базе данных
Скачать со страницы скриптов
Если мы говорим о поиске по контенту на сайте, который сделан на файлах, то первое с чем мы сталкиваемся, против базы данных, как получить все ссылки на все файлы!?
+ все буквы приведем к нижнему регистру my_strtolower
Далее собственно поиск искомого слова в контенте substr_count
+ если что-то найдено, то создаем счетчик +1($line_count)
Далее особо ничего интересного. форма + вывод полученных данных.
Сообщение системы комментирования :
Форма пока доступна только админу. скоро все заработает. надеюсь.
Поиск текста в исходном коде страницы средствами PHP
Опции темы
скрипт находит 60b925ee745b29c4654ddf7c13f32d03 но не находит a5d774cca3d762f81467e4fc4e926daa. Кто знает, подскажите, как с этим бороться. Спасибо
Оказалось все просто. Для работы с удаленными URL в настройках PHP должна быть установлена опция allow_url_fopen.
Ан нет, не помогло. Данная настройка должна стоять на том сервере, с которого мы хотим открыть страницу
Kartograff
Спасибо сказали:
То есть проблема в получении страницы? Или все же проблема в поиске?
lagun4ik
Спасибо сказали:
lagun4ik, проблема в получении страницы. Сервер не дает добро на это
Тогда можно КУРЛ использовать, сейчас дам код.
Но нужно установить curl на сервер
lagun4ik
Спасибо сказали:
Как сделать поиск по сайту с помощью PHP и MySQL
Одна из самых популярных и необходимых функций на любом сайте – это поиск, реализованный с помощью специальной формы. Этот функционал позволяет посетителям быстро находить на сайте интересующий их контент.
Сегодня мы хотим рассказать, как сделать поиск по сайту с помощью специальной формы, которая будет опрашивать таблицы базы данных и выводить информацию о текущих руководителях на сайте. Вы научитесь создавать таблицы базы данных, которая будет содержать в себе информацию о текущем персонале.
Что вам понадобится
Создаем базу данных
Если вы не совсем уверены, что сможете разобраться с базой данных на вашем хостинге, то свяжитесь с хостером для получения соответствующих инструкций или помощи. После того как база данных будет создана, вам нужно будет подключить ее, создать таблицу и записать в нее необходимые данные.
Создание таблицы
Наша таблица должна быть создана в следующем формате:
Column Name | Data Type | Length | Null or Not Null | Primary key? | Auto Increment |
ID | INT | 1 | Not Null | Yes | Yes |
FirstName | Varchar | 50 | Not Null | No | No |
LastName | Varchar | 50 | Not Null | No | No |
Varchar | 50 | Not Null | No | No | |
PhoneNumber | Varchar | 15 | Not Null | No | No |
И среди данных персонала не может быть пустых значений ( null, empty ). Первая строка выделена желтым цветом, потому что столбец ID – наш основной ключ. Основной ключ в базе данных гарантирует, что каждая запись будет уникальной. К этой колонке также применен автоинкремент, а это значит, что каждой записи в нашей базе данных будет присваиваться уникальный номер автоматически.
Вносим представителей персонала в таблицу
Как только разберетесь с таблицей, начните заполнять ее данными. 6 записей вполне достаточно, чтобы закрепить в уме процедуру. Ниже предлагаю вам собственный пример:
Column ID | FirstName | LastName | PhoneNumber | |
2 | Ryan | Butler | ryanbutler@domain.com | 417-854-8547 |
3 | Brent | Callahan | brentcallahan@domain.com | 417-854-6587 |
Разработка формы
Проверка на соответствие критерию
До вывода запрашиваемых результатов нам нужно перепроверить: (1) была ли подтверждена форма, (2) содержит ли строка запроса значение go, (3) был ли поисковой запрос введен в нижнем или верхнем регистре? Если ни одна из проверок не дает положительного результата ( true ), то от нас не требуется выполнять какие-либо действия.
Для начала добавим небольшой блок кода PHP поиск по сайту после закрывающего тега :
Сначала мы открываем блок PHP-кода тегом ””.
Любой PHP-код внутри этой пары тегов будет исполняться сервером. Затем мы проверяем, была ли подтверждена форма:
Далее нам нужно проверить, имеется ли в строке запроса значение go :
Теперь нам нужно убедиться, что посетители могут вводить первую букву в строку запроса только в верхнем или только в нижнем регистре. Нам также нужно предусмотреть способ учета критериев поиска, введенных посетителем. Лучше всего проверять введенные посетителем данные с помощью регулярного выражения:
Мы вкладываем еще одно условное логическое выражение внутрь наших двух. На этот раз мы используем регулярное выражение для проверки ввода. Мы используем встроенную функцию preg_match с двумя параметрами: регулярное выражение, и поле формы, к которому должна применяться проверка.
Результаты Connect, Select, Query и Return из таблицы базы данных
Чтобы получить данные из таблицы, сначала в скрипте поиска по сайту нужно подключиться к серверу. Для этого мы используем следующий код:
Далее при помощи представленного ниже кода, мы выбираем, какую базу данных использовать:
Убираем табуляцию
Результаты выводятся в виде неупорядоченного списка, но суть в том, что нам не нужна табуляция. Чтобы избавиться от нее, добавьте следующее CSS-правило в самое начало вашего файла в head :
Поиск по буквам
Для реализации поиска по буквам потребуется лишь несколько дополнительных строк кода. Добавим этот удобный функционал для посетителей. Таким образом, они смогут находить представителей персонала по буквам, которые содержатся в имени или фамилии.
Добавьте следующую строку кода после закрывающего тега form :
Здесь мы изменили четыре фрагмента кода скрипта поиска по сайту:
Сохраните файл search_byletter.php и проверьте результат.
Поиск определенного сотрудника
Здесь мы изменили четыре фрагмента кода:
Сохраните файл search_byid.php и проверьте результат.
SQL-инъекция
Как уже было отмечено, регулярное выражение гарантирует, что в качестве первого символа посетитель может вводить лишь буквы в нижнем или верхнем регистре.
В завершение
В сегодняшней статье мы рассмотрели, как сделать поиск по сайту, а также:
Используя знания, полученные из этой статьи, вы сможете без труда модифицировать чужой код, а также при необходимости расширять функционал формы поиска.
- поиск существующих файлов для dota 2 как исправить
- поиск телевизора по параметрам