Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: cenzurowanie
Forum PHP.pl > Forum > Przedszkole
fiszol
następujący kod:
  1. <?
  2. function cenzor($txt) 
  3.  {
  4.  $bluzgi = array(
  5.  'bluzg' => '****',
  6.  //inne bluzgi
  7.  );
  8.  $txt = strtr($txt, $bluzgi);
  9.  return $txt;
  10.  }
  11. ?>


zlikwiduje bluzg, ale gdy ktoś napiszę np BLUZG lub BlUzG nie zrobi tego, myślałem o dodaniu do funkcji jeszcze strtolower ale nie satysfakcjonuje mnie takie rozwiązanie, ma ktoś jakieś pomysły ?
mike
Jak rozumiem przeszukałeś już forum i znasz te tematy:
funckja cenzurujaca tekst
[php & MySQL] Cenzura słów z bazy ...
Funkcja cenzura
cenzor
cenzura
cenzura!?
:?:
fiszol
wertowałem już te tematy, idealne wydaje się eregi_replace do podmiany łaciny, z tym że jeśli w tedy bluzgi wymieniam sobie w array'u to eregi_replace ich nie zamienia, przykład:

  1. <?
  2. $txt = "bluzg1 slowo bluzg2";
  3. $bluzg = array('bluzg1','bluzg2');
  4. // $bluzg = "bluzg1"; będzie działać
  5. $cenz = "#$%&^";
  6. $txt = eregi_replace($bluzg,$cenz,$txt);
  7. ?>


dlaczego tak jest?

//poprawka - nie widziałęm tematu kicaja, sorry biggrin.gif
UDAT
Może dlatego że nie przyjmuje jako parametr tablicy questionmark.gif
dtb
http://pl.php.net/manual/pl/function.str-ireplace.php <- jedyne słuszne rozwiązanie

  1. <?
  2. foreach ($bluzgi as $key => $value)
  3.    $txt = str_ireplace ($key, $value, $txt);
  4. ?>
yavaho
A ja mam tak. Naj mniej jest wtedy wklepywania bluzg.
  1. <?php
  2. function Cenzura($txt){
  3. $Bluzgi=array( 
  4. "/bluzg(a|i|asz)/i",
  5. "/dup(a|y|o|sko)/i"
  6. );
  7. return preg_replace( $Bluzgi, '####', $txt );
  8. }
  9. ?>
dtb
yavaho: czy preg_replace zwraca uwage na wielkosc liter? - bo o tym mowimy. w mnualu o tym nie pisze wiec pewnie nie. mozna uzyc eregi_replace, ktore nie zwraca uwagi na wielkosc liter

EDIT: odpowiedz do nast. postu aby nie pisac nowego:
hmm.. nie zauwazylem tego i. moj blad
yavaho
@dtb sprawdz ten skrypt to sie przekonasz.
Zwoc uwage za na koncu kazdego wyrazenia jest modyfikator "i" gdy jest zastosowany w wyrażeniach regularnych powoduje ze w przeszukiwanym ciagu znakow wielkosc liter nie ma znaczenia.

ps. Tylko ze w przypadku takiego cenzora to trzeba przewidziec wszystkie mozliwosci co jest chyba niemozliwe. Chodzi mi o to ze mistrzowie w bluzganiu nie znaja ortografi swojego własnego słownictwa smile.gif A ci bardziej inteligetni piszac drugi post z kolei to juz beda wiedziec jak ominąć cenzora.
Guest
A moze ktos ma pelna liste bluzg?
Po co pisac, jak ktos juz ma. Napewno sie komus przyda.
dtb
sciagnij sobie jp i tam powinno byc w tabela z bluzgami (jakis plik w katalogu install). mozesz dodac ta tabele do swoje bazy lub za pomoca preg_match_all wyciagnac dane z tego zapytania
Guest
sicagnalem sobie jportala i nie widze tam zadnego pliku w install z takowymi hasłami ;/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.