Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> cenzura inaczej...
neverever
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

Ostrzeżenie: (10%)
X----


Napisałem sobie skrypt cenzurujący, który gwiazdkuje pasujące do wzoru wyrazy.
W skrócie ma on mniejwięcej taką postać:
  1. <?
  2. $slowo = array(
  3. "/(w|wy|za)*kurw(o|y|a|ić|iać|ać|iony|iona|ione|ieni)*/i",
  4. "/kuta(s|sa|sy|fon|fony|fonów)+/i",
  5. "/(u|wy|za|prze|przy|pod)*dup(a|y|as|ić|ny|ne|ną|iony|ione|ioną|ionego|ionych|sko|skiem|cia|cie|czyć|eczk
    a
  6. eczki|encja|czyć|odajka)*/i",
  7. "/dziw(ka|ki|ką|kę|kom|ce|eczka|eczce|eczką|eczkę|eczkom)+/i"
  8. );
  9.  
  10.  
  11. $wynik = preg_replace( $slowo, ' *** ', $tekst );
  12. echo $wynik;
  13. ?>


Pytanie brzmi: Jak najlepiej przerobić ten kod, żeby otrzymać funkcję która nie będzie modyfikowała wprowadzonego tekstu a wykrywała tylko obecność zakazanych słów i zwracała w takim przypadku true, lub false gdy tekst jest czysty?

Czy najlepiej będzie użyć eregi w pętli, czy też może coś innego??

I jeszcze jedno pytanie - Czy powyższe reguły można jeszcze bardziej uprościć?
Czy można zagnieżdżać warunki w regułach??

tj. np. zamiast:
  1. <?php
  2. "/(u|wy|za|prze|przy|pod)*dup(a|y|as|ić|ny|ne|ną|iony|ione|ioną|ionego|ionych|sko|skiem|cia|cie|czyć|eczk
    a
  3. eczki|encja|czyć|odajka)*/i"
  4. ?>


coś w stylu:
  1. <?php
  2. "/(u|wy|za|prz(e|y)|pod)*dup(a|y|as|ić|n(y|e|ą)|ion(y|e|ą|ego|ych)|sk(o|iem)|ci(a|e)|czyć|eczk(a|i)|encja|czyć|odajka)*/i"
  3. ?>


(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował neverever 17.04.2008, 12:07:56
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 20:10