" eller " . -------- " Placera substitution in en variabel som ska användas senare vid filtrering fula ord . Till exempel : ?
< Php $ substitut = " ----- " , Addera Store Bad Word List i en Array
Läs " fula ord " listan från disken och förvara den i en datastruktur . Du kan överväga att skapa en array och lagrar varje " fult ord " som ett element i arrayen , såsom :
$ bad_word [ 0 ] = " thisbadword " , $ bad_word [ 1 ] = " thatbadword " ; ;
Även denna typ av struktur kommer att fungera , det är ineffektivt eftersom du måste söka hela samling av " fula ord " för varje ord du kontrollera mot listan . För en mer framkomlig väg för att utföra denna uppgift , skapa en hash-tabell . Designa en associativ array och lagra varje " fult ord " som arrayen tangenten . Tilldela något som värdet , t.ex. " 1 " eller " sant". För att avgöra om ett ord finns med i listan , behöver du bara referera arrayen nyckel , snarare än att söka hela arrayen . Till exempel :
$ bad_words = array ( ) ; $ fp = fopen ( " badwordsfile.txt " , " r " ) or die ( " Kunde inte öppna dåliga ord filen ! " ) , Medan ( $ ord = fgets ( $ fp ) ) { $ bad_words [ $ word ] = 1 ; }
få innehållet att filtrera
Hämta innehållet som du vill filtrera . Innehållet kan vara användarvänlig in kommentarer från ett HTML- formulär , ett dokument på diskett eller ens en webbsida från Internet . Lagra innehållet i en enda variabel . Till exempel :
$ to_do = file_get_contents ( " http://badmusiclyricswithprofanity.com " ) ;
extrahera ord från innehållet
Break den ofiltrerade innehåll i ord genom att separera ord på de utrymmen som skiljer dem åt . Använd PHP " explodera " -funktion för att konvertera den ofiltrerade sträng till en array av ord kan du filtrera individuellt . Till exempel :
$ words_to_filter = explodera ( " " , $ to_do ) ,
Filter fula ord
iterera genom uppsättningen av ord och kontrollera varje ord mot arrayen innehåller " fula ord " lista . Om du kolla arrayen genom att titta för att se om arrayen värdet är en , kommer du att generera ett felmeddelande varje gång du försöker komma åt ett ord som inte finns i listan , eftersom fältindex inte existerar . Använd i stället " isset "-funktionen för att bestämma om ordet är i arrayen. Om det finns en match , ersätta ordet med den valda substitution . Till exempel :
foreach ( $ words_to_filter som $ ord = > $ mark ) {if ( isset ( $ bad_words [ $ word ] ) ) { $ word = $ substitut ; } }
ihop text
Sätt tillbaka texten till en enda variabel med " imploderar " -funktionen - " . explodera " motsatsen till det tar varje array värde och ansluta den med tecken du anger , i vårt fall , det är en plats . Echo resultaten av de filtrerade innehållet på skärmen . Till exempel : ?
$ Filtrerad = implodera ( " " , $ words_to_filter ) , echo $ filtrerad , > Addera