Форум сетевых администраторов
Показаны 1 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- Хаки от Netadmin или "Сделай сам" (http://netadmin.ws/forum/forumdisplay.php?forumid=65)
-- Хак для Censor Words (http://netadmin.ws/forum/showthread.php?threadid=9201)


Помещено Afina 22-07-2004 в 13:53:

Хак для Censor Words

попросили меня сделать хак который бы заменял одни слова на другие.
я подумал и решил что такая функция вроде бы есть просто немного не доделанная. функцию зовут "censortext" (/admin/functions.php). ее и хакнем

code:

function censortext($text) {
  global  $enablecensor,$censorwords,$censorword,$censorchar
;
  if ($enablecensor==1 and $censorwords!="") {
    if (!isset($censorword)) {
      $censorword = array();
      $censorwords = preg_quote($censorwords);
      $censorwords = str_replace('/', '\\/', $censorwords);
      $censorwords = str_replace('\=', '=', $censorwords);
      $cwords=explode(",",$censorwords);
      foreach ($cwords as $cw) {
        list($word1, $word2)=explode("=",$cw);
        $word1 = trim($word1); $word2 = trim($word2);
        if (empty($word2)) $word2 = repeatchar($censorchar,strlen($word1));
        $censorword[$word1] = $word2;
      }
    } else {
      reset($censorword);
    }
    foreach ($censorword as $key=>$val) {
      if (substr($key,0,2)=="\\{") {
        $key=substr($key,2,-2);
        $text=trim(preg_replace("/([^A-Za-z])".$key."(?=[^A-Za-z])/si","\\1".$val," $text "));
      } else {
        $text=trim(preg_replace("/$key/si",$val," $text "));
     }
    }
  }
  $text = str_replace(chr(173), '_', $text);
  $text = str_replace(chr(160), '_', $text);
  return $text;
}



теперь формат ввода слов для автоцензора " слово=замена,слово=замена,с
лово=замена"
если у слова нет замены, то есть между запятыми. то оно заменится на $censorchar

получается старые варианты будут работать и дальше как работали, и модно добавлять новые пункты со знаком равенства

еще приятная фишечка это преобразования поля для ввода нецензорных слов в textarea. необходимо выполнить этот SQL запрос:

code:
UPDATE setting SET setting.description = 'word=word,word=word or word,word=word,word', setting.optioncode = 'textarea' WHERE setting.title = 'Words to censor'



теперь можно идти в админ панель и заполнять список нецензорных слов


Формат времени GMT. Текущее время 00:02.
Показаны 1 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.