" eller " . -------- " Plasser substitusjon inn i en variabel som skal brukes senere når filtrering stygge ord . For eksempel: ?
< Php $ erstatning = " ----- ";
butikken Bad Word List i en Array
< p > Les " dårlig ord "-listen fra disk og lagre den i en datastruktur . Du kan vurdere å opprette en matrise og lagring av hver " dårlig ord " som et element i matrisen , for eksempel : en
$ bad_word [ 0 ] = " thisbadword "; $ bad_word [ 1 ] = " thatbadword " ; ;
Mens denne slags struktur vil fungere , er det ineffektivt fordi du må søke hele utvalget av " stygge ord " for hvert ord du sjekke mot listen . For en mer gjennomførbar måte å utføre denne oppgaven , lage en hash table . Designe en assosiativ array og lagre hver " dårlig ord " som matrise tasten. Tildele noe som verdien , for eksempel " 1" eller " sant. " For å avgjøre om et ord er på listen , trenger du bare å referere matrisen nøkkel, heller enn å søke hele matrisen . For eksempel : en
$ bad_words = array (); $ fp = fopen ( " badwordsfile.txt ", " r") or die ( " Kunne ikke åpne dårlig ord fil! ") , Mens ( $ ord = fgets ( $ fp ) ) {$ bad_words [$ ord ] = 1 ;}
få innholdet til Filter
Gjenopprette innholdet som du vil filtrere. Innholdet kan være brukervennlig innsendt kommentarer fra et HTML-skjema , et dokument på disk eller til en webside fra Internett . Oppbevar innholdet i en enkelt variabel . For eksempel : en
$ to_do = file_get_contents ( " http://badmusiclyricswithprofanity.com ");
Pakk Ord fra innholdet
Break den ufiltrerte innhold i ord ved å skille ordene på områder som skiller dem . Bruk PHP " eksplodere "-funksjonen til å konvertere den ufiltrerte streng i en rekke ord du kan filtrere individuelt . For eksempel : en
$ words_to_filter = eksplodere ("" , $ to_do ) ;
Filter stygge ord
Iterate gjennom rekke ord og sjekke hvert ord mot array som inneholder de "dårlige ord "-liste . Hvis du sjekker matrisen ved å se å se om matrisen verdien er en, vil du generere en feilmelding hver gang du prøver å få tilgang til et ord som ikke er på listen , fordi datatabellindekser ikke eksisterer. Bruk i stedet " isset " funksjonen for å finne ut om ordet er i matrisen . Hvis det er en kamp , erstatte ordet med den valgte substitusjon . For eksempel : en
foreach ( $ words_to_filter som $ ord = > $ mark ) { if ( isset ( $ bad_words [$ ord ] ) ) {$ ord = $ erstatning ;} }
Monter tekst
Sett teksten tilbake til en enkelt variabel med " implodere " funksjon - " . eksplodere " det motsatte av det tar hver matrise verdi og bli med det med tegn du angir , i vårt tilfelle , er det en plass . Ekko resultatene av de filtrerte innholdet til skjermen. For eksempel: ?
$ Filtrert = implodere ("" , $ words_to_filter ) ; echo $ filtrert ; >