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

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

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

 

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

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

тема: ereg_replace() - зависимость от регистра
 
 автор: ANGO   (18.05.2007 в 18:45)   письмо автору
 
 

Привет!
Вот сделал подсветку в результатах поиска , то есть:
$row["name"] = ereg_replace($word, "<font color=cc0000><b>$word</b></font>", $row["name"])

классно, подсвечивает все слова $word в результатах поиска, но одна проблема, если в строке поиска слово большим регистром, а в результатах маленьким - не подсвечивает

я пытался делать с подстановкой /i что то типа ereg_replace($word/i, "<font color=cc0000><b>$word</b></font>", $row["name"])
но не работает.

Как сделать функцию ereg_replace не регистрочувствительной ???
буду благодарен за совет!

   
 
 автор: mefestofel   (18.05.2007 в 18:55)   письмо автору
 
   для: ANGO   (18.05.2007 в 18:45)
 

Попробуйте preg_replace().
Хотя не понятны некоторые вещи, дайте исходный код посмотреть.

   
 
 автор: kasmanaft   (18.05.2007 в 18:59)   письмо автору
 
   для: ANGO   (18.05.2007 в 18:45)
 

Есть регистронезависимая ф-я eregi_replace
И как заметил mefestofel, можно использовать preg_replace с модификатором i (а само
выражение взять в ограничители, например, "/".. то есть "/$word/i" с кавычками)

   
 
 автор: mefestofel   (18.05.2007 в 19:13)   письмо автору
 
   для: ANGO   (18.05.2007 в 18:45)
 

Покажите что Вы помещаете в переменную $word, а лучше дайте исходный код посмотреть.

   
 
 автор: ANGO   (18.05.2007 в 19:28)   письмо автору
 
   для: mefestofel   (18.05.2007 в 19:13)
 

а в переменной любое слово может быть
я вот так сделал


$row["name"] = preg_replace("/$word/i", "<font color=cc0000><b>$word</b></font>", $row["name"])


это работает, подсвечивает все, НО, теперь если вводишь запрос СЛОВО большим регистром, оно заменяет все СЛОВО тексте большим регистром и подсвечивае ))))

вот я пытаюсь добиться, чтобы оно подсвечивало слова, не меняя регистр, в независимости от регистра СЛОВА для поиска

   
 
 автор: mefestofel   (18.05.2007 в 19:37)   письмо автору
 
   для: ANGO   (18.05.2007 в 19:28)
 

mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
pattern - регулярное выражение
subject - строка в которой надо искать
replacement - на что заменяем.

Что Вы помещаете в переменную $word? Второй раз спрашиваю.

   
 
 автор: ANGO   (18.05.2007 в 19:47)   письмо автору
 
   для: mefestofel   (18.05.2007 в 19:37)
 

я же говорю, в переменной $word любое слово для поиска по базе которое введет пользователь, разумеется прошедшее проверку на недопустимые символы

   
 
 автор: ANGO   (18.05.2007 в 19:48)   письмо автору
 
   для: ANGO   (18.05.2007 в 19:47)
 

а что означает mixed ???

   
 
 автор: kasmanaft   (18.05.2007 в 20:09)   письмо автору
 
   для: ANGO   (18.05.2007 в 19:48)
 

Слово $word надо бы обработать ф-ей preg_quote..
А чтоб не трогать регистр, можно вот так поступить:

$row["name"] = preg_replace("/($word)/i", "<font color=cc0000><b>\\1</b></font>", $row["name"])

   
 
 автор: ANGO   (18.05.2007 в 21:36)   письмо автору
 
   для: kasmanaft   (18.05.2007 в 20:09)
 


$row["name"] = preg_replace("/($word)/i", "<font color=cc0000><b>\\1</b></font>", $row["name"])

это не пашет, глотает слово для поиска

   
 
 автор: kasmanaft   (19.05.2007 в 06:32)   письмо автору
 
   для: ANGO   (18.05.2007 в 21:36)
 

Чего делает?

<?php
$text 
'text bla bla text bla';
$word preg_quote('BLA');
echo 
preg_replace("/($word)/i""<font color=cc0000><b>\\1</b></font>"$text), "<br>";
echo 
preg_replace("/$word/i""<font color=cc0000><b>$word</b></font>"$text);
?>

   
Rambler's Top100
вверх

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