1. WScout - 24 Декабря, 2009 - 03:40:27 - перейти к сообщению
Здравствуйте. Столкнулся с проблемой при организации поиска. Существует некий запрос пользователя - $inq_find. По этому запросу найдена запись в базе - $description. Теперь в результатах поиска мне нужно взять весь текст $description, выбрать из него запрашиваемое слово, выделить его и вывести еще слов пятнадцать после запрашиваемого. Делаю это через exlode($inq_find, $description);. В результате получаем минимум два массива. Первый - до ключевого слова, второй после. Это удобно для вывода. Но есть нюансик, explode() не видит слово, если не совпадает регистр. Что сделать? Может вообще использовать ддругой алгоритм, только какой?
2. Davinchi - 24 Декабря, 2009 - 05:43:26 - перейти к сообщению
CODE:
str_ireplace()-Регистро-независимый вариант функции str_replace().
str_replace()-Заменяет строку поиска на строку замены
Функция str_replace ($str1, $str2, $source) заменяет в строке $source (которая в процессе работы функции не изменяется) все вхождения подстроки $str1 на подстроку $str2 и возвращает результат в виде новой строки.
str_ireplace()-Регистро-независимый вариант функции str_replace().
str_replace()-Заменяет строку поиска на строку замены
Функция str_replace ($str1, $str2, $source) заменяет в строке $source (которая в процессе работы функции не изменяется) все вхождения подстроки $str1 на подстроку $str2 и возвращает результат в виде новой строки.
3. WScout - 25 Декабря, 2009 - 02:42:20 - перейти к сообщению
Да, но это функции только выделения слова в тексте. Их можно использовать например в случае, если слово содержится в названии. Я так и делаю. Но сейчас дело не в том. Допустим есть какой-то кусок текста, большой кусок, и в нем содержится наше слово. Ну не буду же я выводить в результатах поиска весь кусок с выделенным словом. Мне нужно еще вывести какое-то кол-во слов после запрашиваемого, а остальное все отсечь.
4. Davinchi - 25 Декабря, 2009 - 05:13:04 - перейти к сообщению
CODE:
stripos-Возвращает позицию первого вхождения подстроки без учета регистра
stripos-Возвращает позицию первого вхождения подстроки без учета регистра
CODE:
дальше смотрим длинну строки поиска strlen()
CODE:
выводим строку поиска жирным, а дальше выводим еще n символов после строки поиска substr()
что первое в голову пришло
5. WScout - 02 Января, 2010 - 11:39:29 - перейти к сообщению
Спасибо за решение проблемы. Все четко и точно работает. Недавно начал использовать php, все эти функции знаю, но пока не сильно развито у меня программное чутье, поэтому и не сообразил их сразу применить, на сам деле все просто. Только вот столкнулся с другой - функция stripos работает в php5, на локалке у меня все пашет, а вот заливаю на сервак, а там облом. Пришлось немного порыться в интернете, чтобы найти одну функцию, которая слегка упрощает принцип работы и решает проблему с php5 - stristr, которая режет сроку от заданного слова до конца и без учета регистра. Все отлично работает, как и с предыдущим примером. Еще раз спасибо за идею и вообще поддержку.