Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функция антимата

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Okula
Отправлено: 07 Ноября, 2010 - 00:07:25
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Помогите разобраться.
Пишу функцию антимата и столкнулся с такой проблемой: нужно искать матные слова в тексте независимо от регистра.
У меня база с матными словами имеет такую структуру (база MySQL):
id | slovo
1 | слово
2 | слово

Слова в базе все в нижнем регистре.

Функция выглядит так:
PHP:
скопировать код в буфер обмена
  1. function antimat($text) {
  2.     $query = mysql_query("SELECT `slovo` FROM `antimat`;");
  3.     while($inf = mysql_fetch_assoc($query)) {
  4.         $mat[$inf['slovo']] = "***";
  5.     }
  6.     $text = str_replace(array_keys($mat), array_values($mat), $text);
  7.     return $text;
  8. }

Заменяет слова только если регистр совпадает. Пробовал заменять по примеру ниже - ошибку выдаёт.

Подскажите как решить проблему.
 
 Top
vitaliy_mad
Отправлено: 07 Ноября, 2010 - 00:11:57
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




str_ireplace с koi8-r работает нормально
(Добавление)
PHP:
скопировать код в буфер обмена
  1.     $query = mysql_query("SELECT `slovo` FROM `antimat`;");
  2. unset($mat);  
  3.  while($inf = mysql_fetch_assoc($query)) {
  4.         $mat[] = $inf['slovo'];
  5.     }
  6. $text = str_ireplace($mat, '***', $text);

так не проще?

(Отредактировано автором: 07 Ноября, 2010 - 00:13:56)

 
 Top
Okula
Отправлено: 07 Ноября, 2010 - 00:22:36
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Так не работает. Только что проверил.
И кодировка у меня не koi8-r, а utf-8

(Отредактировано автором: 07 Ноября, 2010 - 00:23:03)

 
 Top
vitaliy_mad
Отправлено: 07 Ноября, 2010 - 00:25:26
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




для UTF используються другие функции: http://php.su/functions/?cat=mbstring

mb_eregi_replace
 
 Top
Okula
Отправлено: 07 Ноября, 2010 - 00:44:06
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Блин, эта функция не работает с масивами, только со строкой.
 
 Top
vitaliy_mad
Отправлено: 07 Ноября, 2010 - 00:48:17
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




да... UTF не всегда хорош... ::biggrin24.gif::
 
 Top
Okula
Отправлено: 07 Ноября, 2010 - 00:55:14
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Да уж. А может быть из других семейств есть что-то наподобе работающее с масивами. Как насчёт iconv_ ?
 
 Top
vitaliy_mad
Отправлено: 07 Ноября, 2010 - 00:58:03
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




mb_convert_encoding можно попробовать но это уже извращение ))) хотя в любом случае извращаться прийдется
 
 Top
Okula
Отправлено: 07 Ноября, 2010 - 01:55:45
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Вот нашёл класс для обработки мата работающий с кодировкой UTF-8. Так и не понял что нужно подключать.
Пробовал подключить класс Censure не получилось.
Может вы разберётесь как он работает, ато у меня уже мозг пухнет от такого извращенства =))))
Скачать файл: Censure-3.2.6.7z
Скачан раз: 124

(Отредактировано автором: 07 Ноября, 2010 - 02:15:45)

 
 Top
DeepVarvar Супермодератор
Отправлено: 07 Ноября, 2010 - 07:29:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




В цикл её:
 
 Top
EuGen Администратор
Отправлено: 08 Ноября, 2010 - 11:59:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Не в тот раздел. В Пользовательских функциях - только готовый код


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
OrmaJever Модератор
Отправлено: 08 Ноября, 2010 - 13:42:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Мне кажется нужно матерные слова додобавления в базу.
и здесь должна прекрасно работать str_ireplace()


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vitaliy_mad
Отправлено: 08 Ноября, 2010 - 13:44:57
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




OrmaJever, там UTF
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB