URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 849
[ Назад ]

Исходное сообщение
"антимат - трабла с регистром букв"

Отправлено glex , 06-Ноя-02 10:07 
Народ, подскажите как быть. Делаю антимат для г.книги.
Сделал такую функцию.
$text - это сам текст, откуда надо маты вырезать.
$badwords - это список плохих слов.

function flt_bdwrd ($text, $badwords)
{
  $bw=explode(" ", $badwords);
  
  foreach ($bw as $badword)
  {
    $text = eregi_replace($badword, "<censored>", $text);
  }
  return $text;
}


Дык вот получается такая штука.
eregi_replace не понимает разный регистр русских букв.
А с английскмми все нормально.
Может кто чего посоветует.


Содержание

Сообщения в этом обсуждении
"RE: антимат - трабла с регистром букв"
Отправлено J , 06-Ноя-02 15:22 
>Народ, подскажите как быть. Делаю антимат для г.книги.
>Сделал такую функцию.
>$text - это сам текст, откуда надо маты вырезать.
>$badwords - это список плохих слов.
>
>function flt_bdwrd ($text, $badwords)
>{
>  $bw=explode(" ", $badwords);
>
>  foreach ($bw as $badword)
>  {
>    $text = eregi_replace($badword, "<censored>", $text);
>  }
>  return $text;
>}
>
>
>Дык вот получается такая штука.
>eregi_replace не понимает разный регистр русских букв.
>А с английскмми все нормально.
>Может кто чего посоветует.


надо правильно настроить локаль в системе


"RE: антимат - трабла с регистром букв"
Отправлено glex , 10-Ноя-02 09:03 
>>Народ, подскажите как быть. Делаю антимат для г.книги.
>>Сделал такую функцию.
>>$text - это сам текст, откуда надо маты вырезать.
>>$badwords - это список плохих слов.
>>
>>function flt_bdwrd ($text, $badwords)
>>{
>>  $bw=explode(" ", $badwords);
>>
>>  foreach ($bw as $badword)
>>  {
>>    $text = eregi_replace($badword, "<censored>", $text);
>>  }
>>  return $text;
>>}
>>
>>
>>Дык вот получается такая штука.
>>eregi_replace не понимает разный регистр русских букв.
>>А с английскмми все нормально.
>>Может кто чего посоветует.
>
>
>надо правильно настроить локаль в системе

Локаль проавильная.
Я уже нашел чего делать.
Есть такая функция string sql_regcase(string).
Она преобразует строку к такому виду, где каждая буква заменяется парой букв [БОЛЬШАЯмаленькая] в квадратных скобках.
И эту преобразованную строку уже можно подставлять в регулярные выражения.

echo sql_regcase ("Привет, Мир!");
напечатает
[Пп][Рр][Ии][Вв][Ее][Тт], [Мм][Ии][Рр]!