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.

Ti consigliamo anche