Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: preg_replace русские заглавные буквы
 
 автор: -sasha-   (27.07.2010 в 17:01)   письмо автору
 
 

Добрый день.

Такая проблема, код не работает если слово начинается с большой буквы

<?
$title 
preg_replace("#(".$search.")#i",'<span style="color: red">\1</span>',$title);
?>


setlocale(LC_ALL, "ru_RU.UTF-8");
не помогает!

Может кто знает как решить ?

  Ответить  
 
 автор: -sasha-   (27.07.2010 в 17:03)   письмо автору
 
   для: -sasha-   (27.07.2010 в 17:01)
 

Разве что можно переводить все слова в нижний регистр то тогда все работает.
Но некрасиво получается при выводе информации

  Ответить  
 
 автор: Гавриленко Дмитрий   (27.07.2010 в 17:04)   письмо автору
 
   для: -sasha-   (27.07.2010 в 17:01)
 

странно! обходить регистр стоит... а не ищет!

  Ответить  
 
 автор: neadekvat   (27.07.2010 в 17:16)   письмо автору
 
   для: -sasha-   (27.07.2010 в 17:01)
 

Попробуйте модификатор u (указывает, что строка в utf-8)

  Ответить  
 
 автор: -sasha-   (27.07.2010 в 17:30)   письмо автору
 
   для: neadekvat   (27.07.2010 в 17:16)
 

не. не пашет. все также.

  Ответить  
 
 автор: neadekvat   (27.07.2010 в 17:39)   письмо автору
 
   для: -sasha-   (27.07.2010 в 17:30)
 

Так, стоп. У вас там только одно слово или просто выражения без всяких условий? Так зачем вам регулярка, используйте строковые функции замены.

  Ответить  
 
 автор: -sasha-   (27.07.2010 в 17:44)   письмо автору
 
   для: neadekvat   (27.07.2010 в 17:39)
 

Это подсветка найденных выражений. Поиск реализовую на форуме.

  Ответить  
 
 автор: neadekvat   (27.07.2010 в 17:51)   письмо автору
 
   для: -sasha-   (27.07.2010 в 17:44)
 

Ну так я и говорю, используйте строковые функции.
Так как у вас utf-8, то вам нужно с mbstring работать. Посмотрите здесь, в комментариях есть пару вариантов функции mb_str_replace

  Ответить  
 
 автор: -sasha-   (27.07.2010 в 18:09)   письмо автору
 
   для: neadekvat   (27.07.2010 в 17:51)
 

Функции mb_str_replace нет!

Мне нужны именно рег. выражения.

Так как мне потом надо будет выводить же резуальтат поиска с закрешенной частью искомой детали!

  Ответить  
 
 автор: neadekvat   (27.07.2010 в 18:11)   письмо автору
 
   для: -sasha-   (27.07.2010 в 18:09)
 

Что значит нет? Я сказал в комментариях посмотрите - там есть реализация этой функции.

> Так как мне потом надо будет выводить же резуальтат поиска с закрешенной частью искомой детали!
Во-первых, не понял, с какой деталью (что за закрешенной?)
Во-вторых, опять не понятно, почему именно регулярка, если у вас там тупо слово заменяется, без всяких шаблонов.

  Ответить  
 
 автор: -sasha-   (27.07.2010 в 18:33)   письмо автору
 
   для: neadekvat   (27.07.2010 в 18:11)
 

Оно не заменяется! оно остается. просто закрашывается красным цветом!

Я имел ввиду что в PHP нет такой функции.

  Ответить  
 
 автор: neadekvat   (27.07.2010 в 18:36)   письмо автору
 
   для: -sasha-   (27.07.2010 в 18:33)
 

> Я имел ввиду что в PHP нет такой функции.
Я знаю. И что?

> Оно не заменяется! оно остается. просто закрашывается красным цветом!
Послушайте, с таким подходам, вам сайты не делать.
Это заказчик, который является далеким человеком от компьютеров может сказать, что "Он просто окрашивается"
А вы как программист, которые сам реализует замену, должны понимать, что это замена, и ничто иначе.
И для этого вам не нужна регулярка. Вам нужна строковая функция.

  Ответить  
 
 автор: -sasha-   (27.07.2010 в 18:55)   письмо автору
 
   для: neadekvat   (27.07.2010 в 18:36)
 

Я просто подумал что вы имеете ввиду встроенную ф-цию в ПХП.

не пашут те примеры. все так же.

в общем сделал с помощью str_ireplace.

Правда все в нижнем регистре по прежнему.

  Ответить  
 
 автор: neadekvat   (27.07.2010 в 18:59)   письмо автору
 
   для: -sasha-   (27.07.2010 в 18:55)
 

> Я просто подумал что вы имеете ввиду встроенную ф-цию в ПХП.
Вы че смеетесь? Я вам сразу сказал, что в комментариях реализована эта функция. Ппц.

Если ничего не пашет - может, причина в другом, а?

  Ответить  
 
 автор: -sasha-   (27.07.2010 в 19:11)   письмо автору
 
   для: neadekvat   (27.07.2010 в 18:59)
 

Я еще раз говорю - что просто не так понял!

Да я уже целый день с этим маюсь. ничего не помогает...

  Ответить  
 
 автор: neadekvat   (27.07.2010 в 19:33)   письмо автору
 
   для: -sasha-   (27.07.2010 в 19:11)
 

Уровень ошибок какой выставлен?
Ну и посмотрите, что после подстановки получается в рег.выражении.

  Ответить  
 
 автор: Николай2357   (28.07.2010 в 02:39)   письмо автору
 
   для: -sasha-   (27.07.2010 в 19:11)
 

На кой там вообще регулярка?
<?
str_replace
($search,'<span style="color: red">'$search .'</span>'$title);

  Ответить  
 
 автор: Гавриленко Дмитрий   (27.07.2010 в 17:47)   письмо автору
 
   для: neadekvat   (27.07.2010 в 17:39)
 

Да кстати! Еще регулярные выражения требуют определенных затрат от сервера.

  Ответить  
 
 автор: neadekvat   (27.07.2010 в 17:51)   письмо автору
 
   для: Гавриленко Дмитрий   (27.07.2010 в 17:47)
 

А я и не знал. Спасибо, что подсказали.

  Ответить  
 
 автор: Гавриленко Дмитрий   (27.07.2010 в 17:56)   письмо автору
 
   для: neadekvat   (27.07.2010 в 17:51)
 

Я дополнил :)

  Ответить  
 
 автор: Лена   (27.07.2010 в 17:30)   письмо автору
 
   для: -sasha-   (27.07.2010 в 17:01)
 

Есть ошибка в замещающем выражении.

<?
$title 
preg_replace("#(".$search.")#i",'<span style="color: red">\\1</span>',$title);
?> 

  Ответить  
 
 автор: -sasha-   (27.07.2010 в 17:32)   письмо автору
 
   для: Лена   (27.07.2010 в 17:30)
 

Не. эт не то. можно и \1 и \\1

  Ответить  
 
 автор: Гавриленко Дмитрий   (27.07.2010 в 17:36)   письмо автору
 
   для: Лена   (27.07.2010 в 17:30)
 

Зачем строку экранировать...???!!!

  Ответить  
 
 автор: Лена   (27.07.2010 в 17:43)   письмо автору
 
   для: Гавриленко Дмитрий   (27.07.2010 в 17:36)
 

Слеш экранируется.

  Ответить  
 
 автор: nikita2206   (27.07.2010 в 17:57)   письмо автору
 
   для: Лена   (27.07.2010 в 17:43)
 

Слеш экранируют если двойные кавычки использованы.

  Ответить  
 
 автор: Гавриленко Дмитрий   (27.07.2010 в 18:00)   письмо автору
 
   для: Лена   (27.07.2010 в 17:43)
 

В этой строке по моему нет смысла этого делать!

  Ответить  
 
 автор: sms-send   (27.07.2010 в 18:56)   письмо автору
 
   для: Гавриленко Дмитрий   (27.07.2010 в 18:00)
 

По-моему, есть.

  Ответить  
 
 автор: Лена   (27.07.2010 в 21:16)   письмо автору
 
   для: Гавриленко Дмитрий   (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. Заметьте, все свои предложения я ,обращаясь к вам, пишу без восклицательных знаков.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования