Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

PHP 5: le filter functions

Come monitorare, validare e depurare i dati contenuti all'interno di variabili e argomenti in PHP 5
Come monitorare, validare e depurare i dati contenuti all'interno di variabili e argomenti in PHP 5
Link copiato negli appunti

Alcune delle più interessanti novità introdotte nella versione 5 di PHP sono le cosiddette filter functions, cioè funzioni native del linguaggio che permettono di monitorare, validare e depurare i dati contenuti all'interno di variabili e argomenti.

Queste funzioni si rivelano uno strumento molto utile per il controllo di parametri di input, stringhe, array e altri costrutti e in molti casi costituiscono un'alternativa valida a complicate istruzioni basate sulle espressioni regolari.

Le filter functions al momento disponibili sono sette, tutte introdotte nella release 5 del linguaggio:

  1. filter_has_var()
  2. filter_id()
  3. filter_input()
  4. filter_input_array()
  5. filter_list()
  6. filter_var_array()
  7. filter_var()

In questa breve trattazione verranno descritte le caratteristiche di alcune di queste funzioni e le diverse modalità di utilizzo.

I filtri

Per svolgere il loro compito le funzioni precedentemente descritte hanno a disposizione dei filtri, questi ultimi possono essere visualizzati attraverso la funzione filter_list() che restituisce un array contenente tutti i filtri utilizzabili; a questo proposito si analizzi il seguente esempio:

<?php
print_r(filter_list());
?>

Il risultato dell'esecuzione di queste tre semplici righe di listato sarà il seguente:

Array
  (
  [0] => int
  [1] => boolean
  [2] => float
  [3] => validate_regexp
  [4] => validate_url
  [5] => validate_email
  [6] => validate_ip
  [7] => string
  [8] => stripped
  [9] => encoded
  [10] => special_chars
  [11] => unsafe_raw
  [12] => email
  [13] => url
  [14] => number_int
  [15] => number_float
  [16] => magic_quotes
  [17] => callback
  )

Da notare come la funzione filter_list() non sia in grado di restituire l'identificativo univoco dei filtri contenuti all'interno del relativo vettore, essa infatti si limita a mostrare il nome di ciascuno di essi e il numero indice (da 0 a n) che ne stabilisce la posizione all'interno dell'array.

Per ottenere l'ID di un determinato filtro, si dovrà utilizzare invece l'apposita funzione filter_id() a cui passare il nome dello stesso quale argomento, ad esempio la seguente istruzione:

<?php
echo(filter_id("special_chars"));
?>

restituirà in output l'intero "515" che è appunto il valore dell'identificativo univoco associato al filtro denominato "special_chars" che ha come numero indice "10" nel vettore dei filtri utilizzabili.

Validare i dati con i filtri

I filtri elencati dalla lettura dell'array vengono utilizzati per due ambiti di applicazione:

  1. la validazione dei dati;
  2. la depurazione dei dati.

Per quanto riguarda la validazione, sono disponibili i seguenti filtri:

  • FILTER_VALIDATE_INT
  • FILTER_VALIDATE_BOOLEAN
  • FILTER_VALIDATE_FLOAT
  • FILTER_VALIDATE_REGEXP
  • FILTER_VALIDATE_URL
  • FILTER_VALIDATE_EMAIL
  • FILTER_VALIDATE_IP

Utilizzare i filtri per la validazione è estremamente semplice, si analizzi a questo proposito il seguente esempio:

<?php
// controllo sul formato di un indirizzo email
// con le filter functions

// definizione di un indirizzo email
$email = "info@megan fox.com";
// controllo tramite funzione e filtro per la validazione
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
  {
 // messaggio in caso di esito negativo
  echo "Indirizzo email non valido.";
  }else{
// messaggio in caso di esito positivo
  echo "Indirizzo email valido.";
  }
?>

Nel caso specifico, la procedura di validazione tramite filtro restituirà esito negativo in quanto l'indirizzo e-mail passato come argomento alla funzione filter_var() FILTER_VALIDATE_EMAIL

Depurare i dati con i filtri

Per quanto riguarda il filtri messi a disposizione per le filter functions nelle operazioni di depurazione dei dati, essi sono i seguenti:

  • FILTER_SANITIZE_STRING
  • FILTER_SANITIZE_ENCODED
  • FILTER_SANITIZE_SPECIAL_CHARS
  • FILTER_SANITIZE_EMAIL
  • FILTER_SANITIZE_URL
  • FILTER_SANITIZE_NUMBER_INT
  • FILTER_SANITIZE_NUMBER_FLOAT
  • FILTER_SANITIZE_MAGIC_QUOTES

Così come per i filtri destinati alla validazione, anche l'utilizzo dei parametri per la depurazione dei dati è molto semplice; a questo proposito si osservi il seguente esempio:

<?php
$nome = "<h1>Megan Fox<h1>";
var_dump(filter_var($nome, FILTER_SANITIZE_STRING));
?>

L'output dell'istruzione proposta sarà il seguente:

string(9) "Megan Fox"

Il filtro FILTER_SANITIZE_STRING, utilizzato come secondo argomento per la funzione filter_var(), permette infatti di rimuovere i il markup HTML restituendo una stringa depurata dai tags.

Validare e depurare assieme

Le funzioni per la validazione e quelle per la depurazione dei dati possono anche essere utilizzate in combinazione tra loro, come nella seguente funzione personalizzata:

<?php
// definizione di una funzione per la depurazione e
// la validazione di un indirizzo e-mail

function validaEmail($email){
// controllo tramite funzione e filtri per la depurazione e la validazione
 return filter_var(filter_var($email, FILTER_SANITIZE_EMAIL), FILTER_VALIDATE_EMAIL);
}
// test della funzione
if(validaEmail("email@miaemail.it")){
// messaggio in caso di esito positivo
  echo "Indirizzo email valido.";
  }else{
// messaggio in caso di esito negativo
  echo "Indirizzo email non valido.";
  }
?>

Nel caso proposto, il filtro FILTER_SANITIZE_EMAIL si occuperà di depurare una stringa da tutti i caratteri non consentiti per un indirizzo di posta elettronica, dopodiché FILTER_VALIDATE_EMAIL permetterà di stabilire se l'output ottenuto della precedente depurazione potrà essere considerato o meno un indirizzo e-mail in formato valido.

Oltre ai filtri già esposti per la validazione e la depurazione, sono disponibili anche i seguenti filtri da utilizzare come parametri per le filter functions:

  • FILTER_CALLBACK
  • FILTER_UNSAFE_RAW

Conclusioni

Le filter functions sono degli strumenti avanzati messi a disposizione da PHP 5 per la validazione e la depurazione di dati da contenuti non desiderati o non validi; nel corso di questa trattazione ne sono state analizzate le caratteristiche e gli ambiti d'utilizzo proponendo anche alcuni esempi pratici. Per approfondimenti si consiglia di consultare l'apposita sezione del manuale ufficiale di PHP.

Se vuoi aggiornamenti su HTML.it inserisci la tua email nel box qui sotto:

Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy

Acconsento al trattamento dei dati per attività di marketing.

Ti consigliamo anche