|
|
|
| Добрый день.
Такая проблема, код не работает если слово начинается с большой буквы
<?
$title = preg_replace("#(".$search.")#i",'<span style="color: red">\1</span>',$title);
?>
|
setlocale(LC_ALL, "ru_RU.UTF-8");
| не помогает!
Может кто знает как решить ? | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 17:01)
| | Разве что можно переводить все слова в нижний регистр то тогда все работает.
Но некрасиво получается при выводе информации | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 17:01)
| | странно! обходить регистр стоит... а не ищет! | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 17:01)
| | Попробуйте модификатор u (указывает, что строка в utf-8) | |
|
|
|
|
|
|
|
для: neadekvat
(27.07.2010 в 17:16)
| | не. не пашет. все также. | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 17:30)
| | Так, стоп. У вас там только одно слово или просто выражения без всяких условий? Так зачем вам регулярка, используйте строковые функции замены. | |
|
|
|
|
|
|
|
для: neadekvat
(27.07.2010 в 17:39)
| | Это подсветка найденных выражений. Поиск реализовую на форуме. | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 17:44)
| | Ну так я и говорю, используйте строковые функции.
Так как у вас utf-8, то вам нужно с mbstring работать. Посмотрите здесь, в комментариях есть пару вариантов функции mb_str_replace | |
|
|
|
|
|
|
|
для: neadekvat
(27.07.2010 в 17:51)
| | Функции mb_str_replace нет!
Мне нужны именно рег. выражения.
Так как мне потом надо будет выводить же резуальтат поиска с закрешенной частью искомой детали! | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 18:09)
| | Что значит нет? Я сказал в комментариях посмотрите - там есть реализация этой функции.
> Так как мне потом надо будет выводить же резуальтат поиска с закрешенной частью искомой детали!
Во-первых, не понял, с какой деталью (что за закрешенной?)
Во-вторых, опять не понятно, почему именно регулярка, если у вас там тупо слово заменяется, без всяких шаблонов. | |
|
|
|
|
|
|
|
для: neadekvat
(27.07.2010 в 18:11)
| | Оно не заменяется! оно остается. просто закрашывается красным цветом!
Я имел ввиду что в PHP нет такой функции. | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 18:33)
| | > Я имел ввиду что в PHP нет такой функции.
Я знаю. И что?
> Оно не заменяется! оно остается. просто закрашывается красным цветом!
Послушайте, с таким подходам, вам сайты не делать.
Это заказчик, который является далеким человеком от компьютеров может сказать, что "Он просто окрашивается"
А вы как программист, которые сам реализует замену, должны понимать, что это замена, и ничто иначе.
И для этого вам не нужна регулярка. Вам нужна строковая функция. | |
|
|
|
|
|
|
|
для: neadekvat
(27.07.2010 в 18:36)
| | Я просто подумал что вы имеете ввиду встроенную ф-цию в ПХП.
не пашут те примеры. все так же.
в общем сделал с помощью str_ireplace.
Правда все в нижнем регистре по прежнему. | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 18:55)
| | > Я просто подумал что вы имеете ввиду встроенную ф-цию в ПХП.
Вы че смеетесь? Я вам сразу сказал, что в комментариях реализована эта функция. Ппц.
Если ничего не пашет - может, причина в другом, а? | |
|
|
|
|
|
|
|
для: neadekvat
(27.07.2010 в 18:59)
| | Я еще раз говорю - что просто не так понял!
Да я уже целый день с этим маюсь. ничего не помогает... | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 19:11)
| | Уровень ошибок какой выставлен?
Ну и посмотрите, что после подстановки получается в рег.выражении. | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 19:11)
| | На кой там вообще регулярка?
<?
str_replace($search,'<span style="color: red">'. $search .'</span>', $title);
|
| |
|
|
|
|
|
|
|
для: neadekvat
(27.07.2010 в 17:39)
| | Да кстати! Еще регулярные выражения требуют определенных затрат от сервера. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(27.07.2010 в 17:47)
| | А я и не знал. Спасибо, что подсказали. | |
|
|
|
|
|
|
|
для: neadekvat
(27.07.2010 в 17:51)
| | Я дополнил :) | |
|
|
|
|
|
|
|
для: -sasha-
(27.07.2010 в 17:01)
| | Есть ошибка в замещающем выражении.
<?
$title = preg_replace("#(".$search.")#i",'<span style="color: red">\\1</span>',$title);
?>
|
| |
|
|
|
|
|
|
|
для: Лена
(27.07.2010 в 17:30)
| | Не. эт не то. можно и \1 и \\1 | |
|
|
|
|
|
|
|
для: Лена
(27.07.2010 в 17:30)
| | Зачем строку экранировать...???!!! | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(27.07.2010 в 17:36)
| | Слеш экранируется. | |
|
|
|
|
|
|
|
для: Лена
(27.07.2010 в 17:43)
| | Слеш экранируют если двойные кавычки использованы. | |
|
|
|
|
|
|
|
для: Лена
(27.07.2010 в 17:43)
| | В этой строке по моему нет смысла этого делать! | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(27.07.2010 в 18:00)
| | По-моему, есть. | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(27.07.2010 в 18:00)
| | А те, кто писал мануал, видимо, считают, что смысл есть:
replacement may contain references of the form \\n or (since PHP 4.0.4) $n, with the latter form being the preferred one.
Это определенная форма ссылки с двумя, а не с одним, слешами, получается, ничего здесь не экранируется.
PS. Заметьте, все свои предложения я ,обращаясь к вам, пишу без восклицательных знаков. | |
|
|
|