" o " . --------" Posizionare la sostituzione in una variabile da utilizzare più tardi, quando il filtraggio parolacce . Ad esempio : ?
< Php $ sostituto = " ----- " ;
Conservare Bad Word List in un Array
< p > Leggi la " parolaccia " lista da disco e conservarla in una struttura di dati . Si potrebbe prendere in considerazione la creazione di un array e la memorizzazione di ogni " brutta parola ", come un elemento della matrice , come ad esempio :
$ bad_word [ 0 ] = " thisbadword " ; $ bad_word [ 1 ] = " thatbadword " ; ;
Mentre questo tipo di struttura funzionerà , è inefficiente perché si deve cercare l'intera serie di "cattive parole" per ogni parola che si controlla con l'elenco . Per un modo più fattibile di compiere questa operazione , creare una tabella hash . Progettare un array associativo e memorizzare ogni " brutta parola ", come la chiave dell'array . Assegnare nulla come valore , come ad esempio "1" o " vero". Per determinare se una parola è nella lista , è sufficiente fare riferimento alla chiave dell'array , piuttosto che cercare l'intero array . Per esempio :
$ bad_words = array (); $ fp = fopen ( " badwordsfile.txt " , "r" ) or die ( "Impossibile aprire il file di male parole !") , Mentre ( $ parola = fgets ( $ fp ) ) { $ bad_words [ $ parola ] = 1; }
ottenere il contenuto su Filtro
recuperare il contenuto che si desidera filtrare . Il contenuto potrebbe essere user - presentato osservazioni da un modulo HTML , un documento su disco o anche una pagina Web da Internet . Conservare il contenuto di una singola variabile . Per esempio :
$ to_do = file_get_contents ( " http://badmusiclyricswithprofanity.com " ) ;
estrarre le parole dal contenuto
rottura il contenuto non filtrato in parole separando le parole presso gli spazi che li dividono . Utilizzare la funzione PHP " esploderà " per convertire la stringa non filtrato in un array di parole è possibile filtrare singolarmente . Per esempio :
$ words_to_filter = explode ( " " , $ to_do ) ;
Filtro parolacce
scorrere la matrice di parole e controllare ogni parola contro l' array contenente la " parolaccia " lista . Se si seleziona la matrice , cercando di vedere se il valore della matrice è uno , si genererà un errore ogni volta che si tenta di accedere a una parola che non è nella lista, perché l'indice di campo non esiste. Invece , utilizzare la funzione " isset " per determinare se la parola è nella matrice . Se vi è una corrispondenza, sostituire la parola con la sostituzione prescelta . Per esempio :
foreach ( $ words_to_filter da $ parola = > $ marchio ) {if ( isset ( $ bad_words [ $ parola ] ) ) { $ parola = $ sostituto ; } }
Rimontare il testo
Mettere il testo di nuovo in una singola variabile con la funzione " implode " - " . esplodere " il contrario di prende ogni valore dell'array e connettiti con personaggi si designa , nel nostro caso , si tratta di uno spazio. Echo risultati dei contenuti filtrati alla schermata . Ad esempio : ?
$ Filtrato = implode ( " " , $ words_to_filter ) ; echo $ filtrata ; >