Bad Word Filter i PHP

Bad Word Filter i PHP


PHP er et skriptspråk som hjelper deg å behandle innspill og lage HTML-utgang for brukerne, så det er fornuftig å bruke den til å lage en "dårlig ord" filter. Prosessen med å lage en "dårlig ord" filter i PHP er ganske enkel. Du etablere en "dårlig ord" -listen, skille innhold som skal filtreres inn ord, sammenligne hvert ord mot listen og fjerne eller erstatte noe annet for hver kamp. Den mest utfordrende delen av å lage en "dårlig ord" filter i PHP er å velge riktig datastruktur og algoritme slik at koden kjøres så raskt og effektivt som mulig.

Opprett Bad Word List

Lag en "dårlig ord" liste som inneholder alle ordene du ikke vil skal vises på skjermen. Skriv hvert ord i en datafil, ett ord per linje. Bestem deg for hva du ønsker å erstatte hvert dårlig ord; for eksempel "*****" eller "<fjernet>" eller "--------". Plasser substitusjon til en variabel som skal brukes senere ved filtrering stygge ord. For eksempel:

<? Php
$ Erstatning = "-----";

Oppbevar Bad Word List i en Array

Les "dårlig ord" liste fra disk og lagre den i en datastruktur. Du kan vurdere å opprette en matrise og lagre hver "dårlig ord" som et element i matrisen, for eksempel:

$ BAD_WORD [0] = "thisbadword";
$ BAD_WORD [1] = "thatbadword";

Selv om denne slags struktur vil fungere, er det ineffektivt fordi du må søke i hele utvalget av "stygge ord" for hvert ord du sjekke mot listen. For en mer gjennomførbar måte å utføre denne oppgaven, opprette en hash table. Design en assosiativ array og lagre hver "dårlig ord" som matrisen nøkkelen. Gi noe som verdien, for eksempel "1" eller "sant". For å avgjøre om et ord er på listen, trenger du bare å referere rekken nøkkelen, snarere enn søke i hele array. For eksempel:

$ Bad_words = array ();
$ Fp = fopen ( "badwordsfile.txt", "r") eller dø ( "Kunne ikke åpne stygge ord fil!");
while ($ ord = fgets ($ fp)) {
$ bad_words [$ ord] = 1;
}

Få innhold til Filter

Hente innholdet som du vil filtrere. Innholdet kan være bruker-sendt kommentarer fra et HTML-skjema, et dokument på disk eller en webside fra Internett. Oppbevar innholdet i en enkelt variabel. For eksempel:

$ To_do = file_get_contents ( "http: //badmusiclyricswithprofanity.com&quot);

Pakk Ord fra innholdet

Bryt ufiltrert innhold i ord ved å skille ordene på de områder som skiller dem. Bruk PHP "eksplodere" -funksjonen for å konvertere den ufiltrerte streng i en rekke ord du kan filtrere individuelt. For eksempel:

$ Words_to_filter = eksplodere ( "", $ to_do);

Filter dårlig ord

Iterere gjennom rekke ord og sjekke hvert ord mot oppstillingen inneholder "dårlig ord" -liste. Hvis du sjekker tabellen ved å se å se om rekken verdien er en, vil du generere en feilmelding hver gang du prøver å få tilgang til et ord som ikke er på listen, fordi matrisen indeksen ikke eksisterer. I stedet bruker de "isset" -funksjonen for å avgjøre om ordet er i rekken. Hvis det er en kamp, ​​erstatte ordet med den valgte substitusjon. For eksempel:

foreach ($ words_to_filter som $ ord => $ mark) {
if (Isset ($ bad_words [$ ord])) {
$ Ord = $ erstatning;
}
}

Monter Text

Sett tekst tilbake i en enkelt variabel med "implode" -funksjonen -. "Eksplodere" det motsatte av Det tar hver matrise verdi og bli den med tegnene du utpeke; i vårt tilfelle, er det en plass. Ekko resultatene av de filtrerte innholdet til skjermen. For eksempel:

$ Filtrert = implode ( "", $ words_to_filter);
echo $ filtrert;
?>