Fabio Donatantonio

Resta connesso

Software Developer / Adjunct Professor

Filtro per Chat in 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.

Fabio Donatantonio

Fabio Donatantonio. Analista e sviluppatore full-stack di applicazioni web in linguaggio PHP. Professore a Contratto per le cattedre di Fondamenti di Informatica e Archivistica Digitale presso Università degli Studi eCampus. Dal 2008 curatore del sito www.donatantonio.net, da sempre appassionato di programmazione, mare, sigari e... musica.

Ti potrebbe piacere anche

Leave a reply

Your email address will not be published. Required fields are marked *

 

Didattica

Università degli Studi eCampus
Data Evento
05/07/2019
11:30
Esame Archivistica Digitale e Informatica per le Scienze Umane - Cds Filologia Moderna - Lettere - Novedrate(CO)
05/07/2019
11:30
Esame Introduzione all'Archivistica Digitale e all'Informatica per le Scienze Umane - Cds Letteratura, Arte, Musica e Spettacolo - Lettere - Novedrate(CO)
05/07/2019
11:30
Esame Abilità Informatiche e Telematiche - Cds Design e Discipline della Moda - Lettere - Novedrate(CO)
12/07/2019
11:30
Esame Introduzione all'Archivistica Digitale e all'Informatica per le Scienze Umane - Cds Letteratura, Arte, Musica e Spettacolo - Lettere - Roma
12/07/2019
11:30
Esame Archivistica Digitale e Informatica per le Scienze Umane - Cds Filologia Moderna - Lettere - Roma
12/07/2019
11:30
Esame Abilità Informatiche e Telematiche - Cds Design e Discipline della Moda - Lettere - Roma
Risorse
Guida HTML/CSS per principianti (link)
Introduzione agli ipertesti (link)
Esercizi guidati in Java (link)
Intelligenza artificiale (link)
Libri
Fondamenti di Informatica (2011) (link)
Informatica per le Scienze Umane (2011) (link)
Fondamenti di Informatica (2014) (link)
Pagina Docente
uniecampus.it - Scheda Docente (link)
Contatti
fabio.donatantonio[at]uniecampus.it

JWhisper, sviluppato presso il Dipartimento di Informatica Applicata dell'Università degli Studi di Salerno:

Stay Connected

Twitter

Le mie foto

Foto di Fabio Donatantonio
×