Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Особенность при замене preg_replace
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (1): [1]   

> Без описания
WScout
Отправлено: 22 Октября, 2009 - 02:10:56
Post Id


Newbie


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2009  

Карма 0




Подскажите, пожалуйста....
Имеется такая ситуация, пользователь вводит запрос в форму поиска, а при выводе результатов в найденных строках выделяется запрашиваемое слово.
Вот так:
preg_replace('/'.$inq_find.'/i', '<b>'.$inq_find.'</b>', $arr['title'])
Где:
'/'.$inq_find.'/i' - Что искать, т.е. запрос пользователя
'<b>'.$inq_find.'</b>' - На что меняем
$arr['title'] - найденная строка, где будет меняться слово
Вроде бы все просто и понятно, но есть один важный нюанс - если пользователь укажет слово с верхним регистром, а в статье слово в нижнем, то функция конечно же совпадение найдет исправно, а вот заменит слово в нижнем регистре на то, которое пользователь ввел в верхнем, вывод получается не очень красивым. Чтобы даже если пользователь введет слово в верхнем регистре, не менять регистр в строке, просто выделять жирным, как выше в примере и все.
Подскажите, пожалуйста, как решить данную проблему!
 
 Top
Furax
Отправлено: 22 Октября, 2009 - 06:43:28
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




CODE:
'<b>\0</b>'
Но есть ещё вопрос: а что будет, если пользователь введёт спецсимвол RegExpовый? Полезно использовать в этом примере функцию preg_quote.

(Отредактировано автором: 22 Октября, 2009 - 06:43:55)

 
 Top
WScout
Отправлено: 22 Октября, 2009 - 07:11:38
Post Id


Newbie


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2009  

Карма 0




Ничего не будет. Сначала данные полученные от пользователя проходят конкретную проверку и урезку. Потом эти данные ищутся в базе, если ничего не находится, значит функция, которую я написал вообще выполнятся не будет. Она будет выполняться, если будет что-то в базе найдено.
 
 Top
Furax
Отправлено: 23 Октября, 2009 - 05:35:25
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Тогда всё путём. Подмигивание
 
 Top
WScout
Отправлено: 25 Октября, 2009 - 12:23:00
Post Id


Newbie


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2009  

Карма 0




Ну это конечно хорошо, только проблема осталась нерешенной.
 
 Top
Furax
Отправлено: 25 Октября, 2009 - 23:27:11
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Я же говорю: вместо
CODE:
'<b>'.$inq_find.'</b>'
Используй
CODE:
'<b>\0</b>'
 
 Top
WScout
Отправлено: 27 Октября, 2009 - 07:27:49
Post Id


Newbie


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2009  

Карма 0




Спасибо большое за решение проблемы. Я как дурак не понял сразу первое сообщение. Я думал ты спрашивал, что будет если пользователь введет этот символ
CODE:
\0
. И до конца не верил, что это поможет после последнего сообщения, ан нет, все оказалось просто. Осталось только выяснить одно, что он значит этот символ.
 
 Top
Furax
Отправлено: 27 Октября, 2009 - 11:02:26
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




\0 - вся найденная подстрока;
\1, \2, ..., \N - соответственно, её части, заключённые в первые, вторые, ..., энные круглые скобки в регулярке.
 
 Top
WScout
Отправлено: 27 Октября, 2009 - 12:52:05
Post Id


Newbie


Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2009  

Карма 0




Большой респект тебе, Furax!!!!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 5 (гостей: 5, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0457]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33