![]() |
Маленький Google на своём сайте
Из формы search в файл search.php приходит переменная $query, содержащая в себе слово или фразу для поиска в MySQL-базе в одном из выбранных полей.
В поле query формы могут быть введены слова в нижнем, верхнем или смешанном регистре. Из поля title или text или из обоих берём содержимое этих полей и ищем в них вхождения $query. Результатом поиска является построение странички на подобие Google, Yandex и других поисковых систем: найденное в заголовке или тексте странички слово выделяется другим цветом (красным, например). Требуется на страничку выводить не весь текст, имеющийся в поле text, а только само слово (или идущие вместе слова, если ищется вся фраза), а также 25 знаков до него и 25 знаков после него. Например: $query = "тест"; Из базы берём содержимое поля text. Затем нам нужно найти вхождение $query, вырезать из основного текста искомое слово (фразу), добавить с двух сторон по 25 символов текста ($num_chars) и выделить $query цветом (<font color="red"><b>$query</b></font> ). PHP код:
<font color="red"><b>Тест</b></font>овая страничка с текстом для <font color="red"><b>тест</b></font>а, который нужен для проверки... Отточия "..." должны добавляться только в конце вырезанной фразы. В приведённом выше примере происходит обрезание текста от нулевой позиции до 25-го символа, после чего добавляются "...". Также при замене слова (фразы) в тексте на значение $query происходит изменение регистра этого слова (фразы) в соответствии с тем, как это слово (фраза) были написаны в поле query формы search. Нужно решить задачу: 1) не менять регистр выделенных слов в выводимом как результат поиска тексте; 2) сделать добавление 25 символов до и после найденного слова (фразы), учитывая, что в обрабатываемом тексте $find_text может быть много вхождений $query; все вхождения должны быть выведены на страничку как результат поиска (выводить единой строкой); 3) нужно посчитать количество вхождений $query для обрабатываемого текста $find_text - результат подсчёта в переменной $find_text_stat. В таблице содержится более 500 строк с полями id, title, text, filename (это путь от корня сайта и имя файла). Сайт на статических html-страничках, перевод его целиком на php пока не планируется. И ещё вопрос: есть ли у кого декодированный файл LEMMSERV.DLL (входит в состав YandexSite Lite 2.5), в котором содержится около 90000 слов для реализации морфологического поиска в русском тексте. |
Цитата:
|
чтобы не изменять регистр заменяемого слова нужно всесто
PHP код:
PHP код:
чтобы найти все вхождения, нужно использовать preg_match_all :-) будут вопросы -- письмом или в аську. |
| Часовой пояс GMT +4, время: 00:53. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.