Fabio Donatantonio

Filtro per Chat in PHP  

realizzato da , il 02 mag. 2011, categoria PHP

PHP

Quando si realizza una chat in PHP o altro linguaggio è necessario prevedere una funzione che effettui la pulizia dei messaggi inoltrati dagli utenti.
Tale codice dovrà intercettare le parole ritenute non legali e oscurarle in fase di visualizzazione.

A tal proposito realizzeremo una funzione in PHP che chiameremo semplicemente filtro; la quale ammetterà come parametro d’input una stringa di testo, contenente appunto il messaggio da filtrare.
La nostra funzione sostituirà le parole incriminate con degli asterischi, lasciando però inalterali il primo e l’ultimo carattere che la compongono.
Se ad esempio volessimo filtrare dal messaggio tutte le ricorrenze della parola gratis, vedremmo al suo posto la parola: g****s.
Vediamo quindi il codice della funzione filtro:

<?php
  $parole = "gratis,sesso,acquista,visitami";

  function filtro($testo){
      global $parole;
      $app = split(',',$parole);
      for($i=0; $i<count($app); $i++){
          if(stripos($testo,$app[$i])!==false){
              $sostituta = substr($app[$i],0,1);
              for($j=1; $j<strlen($app[$i])-1; $j++){
                   $sostituta=$sostituta.'*';
              }
              $sostituta = $sostituta.substr($app[$i],-1);
              $testo = str_ireplace($app[$i],$sostituta,$testo);
          }
      }
      return $testo;
  }
?>

La funzione utilizza essenzialmente cinque funzioni PHP per la manipolazione delle stringhe:

- split
- stripos
- strlen
- substr
- str_ireplace

Da notare innanzitutto la presenza di una variabile parole definita a livello globale, che conterrà appunto la sequenza di parole, separate da virgola(,), da filtrare.
Per personalizzare il codice è sufficiente aggiungere le stringhe da filtrare nella variabile parole.
Tornando alla funzione, vediamo per grandi linee le operazioni che essa effettua sul testo in input:

  1. Preleva tutte le parole da filtrare (split)
  2. Cerca ciascuna parola nel messaggio di input (stripos)
  3. Realizza una parola sostitutiva calcolata sulla lunghezza dell’originale (strlen)
  4. La parola sostitutiva mantiene il carattere iniziale e finale dell’originale (substr)
  5. La parola incriminata viene sostituita (str_ireplace)

Infine il messaggio viene restituito pulito.
La funzione, una volta salvata in un file separato(ad esempio filtro.php) verrà così invocata:

// Richiamo alla funzione
require('filtro.php');

// Chiamata alla funzione su testo $messaggio
$stringa_pulita = filtro($messaggio);

La funzione può tornare molto utile anche qualora si desiderasse eliminare dal messaggio link o url poco graditi. Basterà, come già detto sopra, aggiungere le stringhe da controllare alla variabile globale $parole, prestando attenzione a separare ciascuna da una virgola.

Cliccando qui è possibile vedere in azione il codice.

Cliccando qui è possibile scaricare il codice.

Leggi gli articoli correlati:

  1. Esercizio 26 – Ricerca e conteggio di parole

Invia questo articolo Invia ad un amico (Send this to a friend)
 Stampa questo articolo (Print now)  Stampa questo articolo (Print now)
:, , , ,
Ti � piaciuto? Ti è piaciuto quest'articolo, guida o riflessione? Scoprine tanti altri nel menu articoli.

Torna sopra ↑

Spazio Pubblicitario

Commenta l'articolo - Ti risponderò in privato

Compila il modulo anti-spam sottostante

 

Fabio Donatantonio - Salerno - Città di Castello (PG) - fabio@donatantonio.net
Torna sopra ↑