shp
Guest
Выделение найденного в результатах поиска
Есть небольшая проблемка.
Я делаю поиск по базе товаров магазина. Делаю такой запрос к БД:
Затем в данных, полученных от БД, заменяю keyword1, keyword2... на <span class="">keyword1</span>, <span class="">keyword2</span> и т.д. с помощью preg_replace (для выделения найденного цветом).
Все работает превосходно, но только если несколько ключевых слов не входят в какое-либо слово из полученных данных "с перекрытием". Например, слово в данных - книга. Ключевые слова - "книг" и "гать". В этом случае цветом будет выделено только слово "книг", т.к. после первой замены в данных будет не "гать", а <span class="">г</span>ать. Понятно, что такое встречается редко (такие фрагменты сами должны быть словами, не будут же набирать в строке поиска всякую чушь), но все же...
Посоветуйте, как это лучше сделать. Хотел попробовать определить расположение нужных фрагментов с помощью strpos() и загонять эти числа в массив, а потом заменять все сразу, но strpos() - регистрозависимая функция.
Есть ли регистронезависимый аналог ф-ии strpos()? Или, может быть, какой-нибудь хитрый режим для preg_replace, чтобы при замене не учитывались определенные символы (</span>)?
Есть небольшая проблемка.
Я делаю поиск по базе товаров магазина. Делаю такой запрос к БД:
Код:
SELECT .... WHERE 'pole1' LIKE '%keyword1%' OR 'pole1' LIKE '%keyword2%' ...;
Все работает превосходно, но только если несколько ключевых слов не входят в какое-либо слово из полученных данных "с перекрытием". Например, слово в данных - книга. Ключевые слова - "книг" и "гать". В этом случае цветом будет выделено только слово "книг", т.к. после первой замены в данных будет не "гать", а <span class="">г</span>ать. Понятно, что такое встречается редко (такие фрагменты сами должны быть словами, не будут же набирать в строке поиска всякую чушь), но все же...
Посоветуйте, как это лучше сделать. Хотел попробовать определить расположение нужных фрагментов с помощью strpos() и загонять эти числа в массив, а потом заменять все сразу, но strpos() - регистрозависимая функция.
Есть ли регистронезависимый аналог ф-ии strpos()? Или, может быть, какой-нибудь хитрый режим для preg_replace, чтобы при замене не учитывались определенные символы (</span>)?