Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена без чуствительности регистра, Отключения чуствительности регистра 
:(
    Опции темы
Хрипа
Дата 22.3.2007, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: нет
Всего: нет



$text = ereg_replace($poisk[$k],"<font color=red><b>$poisk[$k]</b></font>",$rows["text"]);
Проблема в том что заменяет только точные свопадения
Пример:
Если поиск содержит Смайл а в тексте написано просто смайл то его не заменит.
как заменять без чуствительности регистра ?
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
skyboy
Дата 22.3.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



начну с замечаний.
  • во-первых:
    Цитата(www.php.net)

    Подсказка: preg_replace(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg_replace(). 

    Что в переводе значит: "preg_replace часто является более быстрой альтернативой EREG_replace'y".
    Тогда твой код может выглядеть так:
    Код

    $text = preg_replace('/'.$poisk[$k].'/i',"<font color=red><b>$poisk[$k]</b></font>",$rows["text"]);

    [добавлено]
    только учитывая, что в PRCE "\t", "\s" b прочие подобные - это шаблоны, а "#" - это конец шаблона, необходимо для перестраховки провести препроцессинг:
    Код

    $text = preg_replace('#'.addcslashes ($poisk[$k],'\#').'#i',"<font color=red><b>$poisk[$k]</b></font>",$rows["text"]);

    [/добавлено]
  • Второе: судя по приведенному примеру, ты можешь использовать str_ireplace, что намного быстрее шаблонных поисковых алгоритмов именно из-за универсальности и гибкости последних.
    Код
    $text = ereg_replace($poisk[$k],"<font color=red><b>$poisk[$k]</b></font>",$rows["text"]);

    можно легко трансформировать в 
    Код

    $text = str_ireplace($poisk[$k],"<font color=red><b>$poisk[$k]</b></font>",$rows["text"]);
  • И в-последних: для регистронезависимого поиска/замены есть отдельная функция eregi_replace.
    Но я всё же рекомендую воспользоваться str_ireplace, или(если реальный алгоритм намного сложнее приведенного) - preg_replace с модификатором "i" для регистро-нечувствительного писка/замены по шаблону.


Это сообщение отредактировал(а) skyboy - 22.3.2007, 09:47
PM MAIL   Вверх
Mal Hack
Дата 23.3.2007, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 16
Всего: 261



Цитата(skyboy @  22.3.2007,  09:37 Найти цитируемый пост)
только учитывая, что в PRCE "\t", "\s" b прочие подобные - это шаблоны, а "#" - это конец шаблона, необходимо для перестраховки провести препроцессинг:

preg_quote предпочтительнее addslaches.
PM ICQ   Вверх
skyboy
Дата 23.3.2007, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Mal Hack, спасибо. я эту функцию как-то потерял, пока писал пост smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.