Coraz częściej internauci surfując po sieci dodają do naszych systemów komentarzy niecenzuralne słowa. Niewielka część darmowych skryptów jest zaopatrzona w tzw. cenzor wyrazów. W tym tutorialu opiszę jak zrealizować taki prosty skrypt.
Skrypt ten zrealizowałem w dwóch wersjach. Pierwsza ma za zadanie pobrać zawartość pliku (cenzura.txt), w którym znajdują się wcześniej wpisane przez nas słowa – każde w osobnym wierszu – a następnie zastąpić niecenzuralne słowa w tekście znakiem '[CENZURA]’.
Druga wersja skrytpu wprowadza małą poprawkę w postaci bardziej precyzyjnego cenzurowania. Mianowicie skrypt zostawia pierwszą literę naszego brzydkiego wyrazu, natomiast całą resztę zamienia na gwiazdki '*’. Dzięki temu możemy domyśleć się co takiego brzydkiego chciał napisać nasz niedobry czytelnik.
Wersja pierwsza
Na samym początku tworzymy tablicę ze słow podanych w pliku 'cenzura.txt’. Następie tworzymy fukncję, ktora zamienia każde brzydkie słowo w tekście na następujący ciąg znaków: '[CENSORED]’ – robimy to przy pomocy pętli foreach() Jak nie trudno się domyśleć, zmienna $tekst to nasz gotowy, ocenzurowany tekst:
| <? $word_array=file(’cenzura.txt’); function cenzura($txt, $lista) { foreach($lista as $brzydkie_slowo) { $txt=str_replace(trim($brzydkie_slowo), „[CENZURA]”, $txt); } return $txt; } $tekst=cenzura($tekst, $word_array); echo $tekst; ?> |
Wersja druga
Ta wersja skryptu jest nieco bardziej rozbudowana. Początek standardowy, czyli tworzymy tablicę brzydkich słów. Następnie należy przygotować funkcję, która:
1.) wyodrębni z tekstu poszczególne wyrazy
2.) porówna każde brzydkie słowo z naszej tablicy z wyrazami z tekstu
3.) jeżeli jakiś wyraz jest „brzydki”, zostawi jego pierwszą literę, natomiast resztę zamieni na gwiazdki '*’
4.) tak ocenzurowany wyraz wstawi z powrotem do tekstu
Krok 1. jest realizowany za pomocą prostej funkcji explode();
Krok 2. to , za pomocą pętli foreach(), wyodrebnianie każdego wyrazu z tablicy brzydkich słów i porownywanie ich, za pomocą pętli for()
Krok 3. polega na postawieniu warunku if(), nastepnie wyodrębnieniu pierwszego znaku z zmiennej $brzydkie_slowo – chodzi konkretnie o $brzydkie_slowo{0} – i na końcu pętlą for wstawienie '*’ zamiast pozostałych znaków
Krok 4. to już zwykły str_replace();
| <? $word_array=file(’cenzura.txt’); function cenzura($txt, $lista) { $slowo=explode(’ ’, $txt); $total=count($slowo); foreach($lista as $brzydkie_slowo) { for($a=0; $a<$total-1; $a++) { if ($slowo[$a]=trim($brzydkie_slowo)) { $censored=$brzydkie_slowo{0}; for($i=1; $i<strlen($slowo[$a]); $i++) { $censored.=’*’; } } } $txt=str_replace(trim($brzydkie_slowo), $censored, $txt); } return $txt; } $tekst=cenzura($tekst, $word_array); echo $tekst; ?> |
W ten oto sposób pokazałem jak prosty skrypt może znacznie „odchamić” naszą stronę. Są to oczywiście jedynie 2 przykłady cenzorów, które można rozbudować nieco bardziej – liczy się tylko Wasz pomysł i inwencja twórcza! Oczywiście przy okazji cenzurowania pojawia się drobny problem z listą słów „niecenzuralnych”. Jak wiemy, jest ich całe mnóstwo w naszym pięknym języku, dlatego też warto poszukać w sieci, czy aby ktoś nie stworzył już kiedyś takiej listy. Jeśli nie, to zawsze możemy sami ją stworzyć – im więcej słów tym lepsza cenzura 😉
