Forum Webscript.Ru
Программирование => PHP => Тема начата: Foshvad от 02 Сентября 2001, 22:50:51
-
Люди, кто разбирается в синтаксисе регулярных выражений, помогите сделать функцию для анимата
Должна она делать примерно следующее:
плохое_слово -> пл********во;
нехорошее_слово -> не********во;
нецензурное_слово -> нецен********во;
Можно было обойтись str_replace, но она чуствительна к регистру и предусмартивать все варианты больших
и маленьких букв будет накладно.
-
Есть у меня скриптик, точнее процедура, на входе - строка, на выходе - флаг. Правда, нужна доработка, предусмотреть все ситуации без коллективного разума не получится. Если интересно - вышлю
-
а чем тебе не подходит
eregi_replace()??
$str= "Все вы п____лы";
$pat= "п_____лы"; #только здесь придется сделать цикл
$repl ="*******"; # по массиву
echo (ereg_replace($pat,$repl,$str));
вывод - Все вы ******
Массив -это "словарь" не цензурных выражений
-
Можно сделать и так, решений много. Слабое место твоей проверки- ты сразу меняешь мат на звездочки, в общем случае можно сделать выбор реакции - либо менять, либо выводить предупреждение о недопустимости мата в сообщении. Кстати, наткнулся еще на одни грабли - некоторые "продвинутые" меняют русские буквы на похожие английские или заменяют "а" на @. Ругались бы наши юзеры на русском - проблем бы не было, меняешь буквы и проверяешь, но ведь они ругаются и на английском и на немецком. Можно, конечно сделать анализ слова на предмет принадлежности к русскому или какому другому языку, но можно тогда представить, во что выльется наш скрипт. Единственное оптимальное решение, которое я нашел - это в словаре нецензурных выражений тоже сразу поменять латиниские символы на кириллицу. Тогда у нас получается следующий алгоритм: получаем проверяемую строчку, копируем ее и начинаем обрабатывать: опускаем в нижний регистр, меняем латиницу на кирилицу ("a" на "а", "f" на "ф", "@" на "а" и тд) и проверяем на вхождение мата. Результат проверки может быть сообщение или сразу в исходной строке меняем на "*" . Если видишь слабые места в алгоритме - пиши...