RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 271
от 01.03.2006, 22:45

Администратор:Калашников О.А.
В рассылке:Подписчиков: 230, Экспертов: 39
В номере:Вопросов: 1, Ответов: 3


Вопрос № 36108: Уважаемые эксперты! В один прекрастный день решил сварганить такую шкуку как антимат. Знаю этот вопрос и раньше обсуждался здесь, но решусь. Для начала решил воспользоваться str_replace(), но дело в том что она учитывает регистр, а всем изве...

Вопрос № 36.108
Уважаемые эксперты!

В один прекрастный день решил сварганить такую шкуку как антимат. Знаю этот вопрос и раньше обсуждался здесь, но решусь. Для начала решил воспользоваться str_replace(), но дело в том что она учитывает регистр, а всем известные слова можно писать по разному "цензура", "ЦеНзура". Если перевести всю стоку в верхний регистр то вид сообшения как вы понимаете портится. Пробовал делать параллельный поиск и замену, но брррр...
Посоветуйте метод (код не обязательно).
P.S. Ссылки не присылать! Хочется сделать самому...
Отправлен: 24.02.2006, 19:48
Вопрос задал: Golden Spider (статус: 4-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Hello, Golden Spider!
str_ireplace - Регистро-независимый вариант функции str_replace().
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 24.02.2006, 20:01
Оценка за ответ: 5
Комментарий оценки:
спасибо конечно Но php4

Отвечает: nkravt
Здравствуйте, Golden Spider!

Для замены слов без учета регистра в php4 можно использовать функцию регулярных выражений:
string eregi_replace (string pattern, string replacement, string string)

Эта функция идентична ereg_replace(), но игнорирует регистр алфавитных символов при поиске совпадений.

Пример:
$string = "This iS a test";
echo eregi_replace (" is", " was", $string);
Ответ отправила: nkravt (статус: 2-ой класс)
Отправлен: 25.02.2006, 09:27
Оценка за ответ: 5
Комментарий оценки:
Пусть теперь попробуют ругнутся! :) Всё работает идеально! Спасибо!

Отвечает: Samum
Здравствуйте, Golden Spider!
В общем, регулярные выражения действительно кажутся оптимальным решением. Однако, я посоветовал бы использовать perl-совместимые регулярные выражения (соответственно, процедура preg_replace() вмето ereg_replace()), т.к. работают они несколько быстрей, и при большом списке "нецензурных слов" это может оказаться полезным.
Выглядеть это будет примерно так, как в приложении (с поправками на твой список и пр.)

Приложение:

---------
Если бы программистам за их ошибки отрывали части тела, то в конце концов им пришлось бы использовать голову!

Ответ отправил: Samum (статус: Специалист)
Отправлен: 25.02.2006, 14:13
Оценка за ответ: 5
Комментарий оценки:
Good! Спасибо!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.16 от 01.03.2006
Яндекс Rambler's Top100

В избранное