English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base PHP

Tutorial avanzato PHP

PHP & MySQL

Manuale di riferimento PHP

Filtraggio PHP

In questo tutorial, imparerai come pulire e verificare l'input utente in PHP.

Verifica e pulizia dei dati con i filtri

Pulizia e verifica dei dati con i filtri

Per utilizzare l'estensione del filtro per verificare i dati, è necessario utilizzare la funzione filter_var() di PHP. La sintassi di base di questa funzione può essere fornita come segue:

filter_var(variable, filter, options)

Questa funzione ha tre parametri, i due ultimi sono opzionali. Il primo parametro è il valore da filtrare, il secondo parametro è l'ID del filtro da applicare e l'array delle opzioni correlate al filtro. Vediamo come funziona.

Pulizia della stringa

Il seguente esempio pulirà la stringa rimuovendo tutti i tag HTML dalla stringa:

<?php
// Commento utente di esempio
$comment = "<h1>Ehi! Come è andata oggi?</h1>";
 
// Pulizia e stampa della stringa di commento
$sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $sanitizedComment;
?>
测试看看‹/›

L'output dell'esempio precedente è come segue:

Ehi! Come è andata oggi?

Verifica del valore intero

L'esempio seguente verificherà se il valore è un intero valido.

<?php
// 示例整数值
$int = 20;
 
// Verifica del valore intero
if(filter_var($int, FILTER_VALIDATE_INT)){
    echo "<b>$int</b> è un intero valido";
} else {
    echo "<b>$int</b> non è un intero valido";
}
?>
测试看看‹/›

Nell'esempio precedente, se si imposta la variabile $int a 0, il codice di esempio mostrerà un messaggio di intero non valido. Per risolvere questo problema, è necessario testare esplicitamente il valore 0 come segue:

<?php
//Valore intero di esempio
$int = 0;
 
//Validazione del valore intero di esempio
if(filter_var($int, FILTER_VALIDATE_INT) === 0 || filter_var($int, FILTER_VALIDATE_INT)){
    echo "The <b>$int</b> è un numero intero valido";
} else {
    echo "The <b>$int</b> non è un numero intero valido";
}
?>
测试看看‹/›

Verifica dell'indirizzo IP

Esempio seguente verifica se il valore è un indirizzo IP valido.

<?php
//Indirizzo IP
$ip = "172.16.254.1";
 
//Esempio di verifica dell'indirizzo IP
if(filter_var($ip, FILTER_VALIDATE_IP)){
    echo "<b>$ip</b> è un indirizzo IP valido";
} else {
    echo "<b>$ip</b> non è un indirizzo IP valido";
}
?>
测试看看‹/›

Puoi applicare ulteriori verifiche agli indirizzi IP IPv4 o IPv6 utilizzando i flag FILTER_FLAG_IPV4 o FILTER_FLAG_IPV6. Ecco un esempio:

<?php
//Indirizzo IP
$ip = "172.16.254.1";
 
//Esempio di verifica dell'indirizzo IP
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){
    echo "<b>$ip</b> è un indirizzo IPv6 valido";
} else {
    echo "<b>$ip</b> non è un indirizzo IPv6 valido";
}
?>
测试看看‹/›

Pulizia e verifica dell'indirizzo email

Esempio seguente mostra come pulire e verificare un indirizzo email.

<?php
//Indirizzo email
$email = "someone@@example.com";
 
//Rimuovi tutti i caratteri illegali dall'email
$sanitizedEmail = filter_var($email, FILTER_SANITIZE_EMAIL);
 
//Verifica dell'indirizzo email
if($email == $sanitizedEmail && filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo "$email è un indirizzo email valido";
} else {
    echo "$email non è un indirizzo email valido";
}
?>
测试看看‹/›

Nota:Il filtro FILTER_SANITIZE_EMAIL rimuove tutti i caratteri non validi, eccetto lettere, numeri e la stringa dell'indirizzo email fornito!#$%&'*+-=?^_`{|}~@.[].

清理和验证URL

以下示例将向您展示如何清理和验证URL。

<?php
// url 示例
$url = "http:://www.example.com";
 
//从网址中删除所有非法字符
$sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL);
 
// 验证网站URL
if($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)){
    echo "$url 是有效的网站网址";
} else {
    echo "$url 不是有效的网站网址";
}
?>
测试看看‹/›

注意:FILTER_SANITIZE_URL过滤器由除字母,数字和所提供的URL字符串中删除所有无效字符$-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=。

您还可以使用flag来检查URL是否包含查询字符串FILTER_FLAG_QUERY_REQUIRED,如以下示例所示:

<?php
//url
$url = "http://www.example.com?topic=filters";
 
//验证网站网址以获取查询字符串
if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){
    echo "<b>$url</b> 包含查询字符串";
} else {
    echo "<b>$url</b> 不包含查询字符串";
}
?>
测试看看‹/›

请参考HTML URL教程,以了解URL的不同组成部分。

验证范围内的整数

以下示例将验证提供的值是否为整数,以及它是否在0到100的范围内。

<?php
// 示例整数值
$int = 75;
 
//验证样本整数值
if(filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))){
    echo "<b>$int</b> 在0到100的范围内";
} else {
    echo "<b>$int</b> 不在0到100的范围内";
}
?>
测试看看‹/›