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

Basic PHP Tutorial

Advanced PHP Tutorial

PHP & MySQL

PHP Reference Manual

Filtros de PHP

In this tutorial, you will learn how to clean and validate user input in PHP.

Use filter to validate and clean data

Clean and validate user input is one of the most common tasks in web applications. To simplify this task, PHP provides a native filter extension that can be used to clean or validate data, such as email addresses, URLs, IP addresses, etc.

To use the filter extension to validate data, you need to use PHP's filter_var() function. The basic syntax of the function can be given as follows:

filter_var(variable, filter, options)

This function has three parameters, of which the last two are optional. The first parameter is the value to be filtered, the second parameter is the ID of the filter to be applied, and the third parameter is an array of options related to the filter. Let's see how it works.

Clean string

The following example will clean the string by removing all HTML tags from it:

<?php
//Example user comment
$comment = "<h1>Hey! How are you today?</h1>";
 
//Clean and print the comment string
$sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $sanitizedComment;
?>
Prueba para ver‹/›

The output of the above example is as follows:

Hey! How are you today?

Validate integer value

The following example will verify whether the value is a valid integer.

<?php
// Ejemplo de valor entero
$int = 20;
 
// Validate integer value
if (filter_var($int, FILTER_VALIDATE_INT)) {
    echo "<b>$int</b> Es un entero válido";
} else {
    echo "<b>$int</b> No es un entero válido";
}
?>
Prueba para ver‹/›

En el ejemplo anterior, si se establece la variable \$int en 0, el código de ejemplo mostrará un mensaje de entero no válido. Para resolver este problema, necesita probar explícitamente el valor 0, como se muestra a continuación:

<?php
//Ejemplo de valor entero
\$int = 0;
 
// Validar el valor de entero de ejemplo
if(filter_var(\$int, FILTER_VALIDATE_INT) === 0 || filter_var(\$int, FILTER_VALIDATE_INT)){
    echo "The <b>\$int</b> Es un entero válido";
} else {
    echo "The <b>\$int</b> No es un entero válido";
}
?>
Prueba para ver‹/›

Verificar la dirección IP

El siguiente ejemplo verificará si el valor es una dirección IP válida.

<?php
// dirección IP
\$ip = ""172.16.254.1";
 
// Ejemplo de verificación de dirección IP
if(filter_var(\$ip, FILTER_VALIDATE_IP)){
    echo "<b>\$ip</b> Es una dirección IP válida";
} else {
    echo "<b>\$ip</b> No es una dirección IP válida";
}
?>
Prueba para ver‹/›

Puede usar FILTER_FLAG_IPV por separado4o FILTER_FLAG_IPV6símbolo adicional para IPV4o IPV6 La dirección IP debe ser verificada. Este es un ejemplo:

<?php
// dirección IP
\$ip = ""172.16.254.1";
 
// Ejemplo de verificación de dirección IP
if(filter_var(\$ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6})();
    echo "<b>\$ip</b> Es una dirección IPV válida6dirección "{
} else {
    echo "<b>\$ip</b> No es una dirección IPV válida6dirección "{
}
?>
Prueba para ver‹/›

Limpiar y verificar la dirección de correo electrónico

El siguiente ejemplo le mostrará cómo limpiar y verificar la dirección de correo electrónico.

<?php
// dirección de correo electrónico
\$email = "someone@@example.com";
 
//Eliminar todos los caracteres ilegales de la dirección de correo electrónico
\$sanitizedEmail = filter_var(\$email, FILTER_SANITIZE_EMAIL);
 
//Verificar la dirección de correo electrónico
if(\$email == \$sanitizedEmail && filter_var(\$email, FILTER_VALIDATE_EMAIL)){
    echo "\$email es una dirección de correo electrónico válida";
} else {
    echo "\$email no es una dirección de correo electrónico válida";
}
?>
Prueba para ver‹/›

Nota:El filtro FILTER_SANITIZE_EMAIL elimina todos los caracteres no válidos, excepto letras, números y la cadena de dirección de correo electrónico proporcionada!*+-=?^_`{|}~@.[]。

Limpieza y verificación de URL

A continuación, se muestra un ejemplo que le mostrará cómo limpiar y verificar una URL.

<?php
//  ejemplo de url
$url = "http:://www.example.com";
 
//Eliminar todos los caracteres ilegales de la dirección web
$sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL);
 
// Verificación de la dirección web del sitio
if($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)){
    echo "$url es una dirección web válida";
} else {
    echo "$url no es una dirección web válida";
}
?>
Prueba para ver‹/›

Nota:El filtro FILTER_SANITIZE_URL elimina todos los caracteres no válidos, excepto letras, números y los caracteres de la cadena de URL proporcionada$-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=。

También puede usar el flag para verificar si la URL contiene la cadena de consulta FILTER_FLAG_QUERY_REQUIRED, como se muestra en el siguiente ejemplo:

<?php
//url
$url = "http://www.example.com?topic=filters";
 
//Verificación de la dirección web del sitio para obtener la cadena de consulta
if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){
    echo "<b>$url</b> Contiene la cadena de consulta";
} else {
    echo "<b>$url</b> No contiene la cadena de consulta";
}
?>
Prueba para ver‹/›

Por favor, consulteURL HTMLTutoriales, para aprenderURLsus diferentes componentes.

Verificación de enteros en el rango

A continuación, se muestra un ejemplo que verifica si el valor proporcionado es un entero y si está en el rango de 0 a10en el rango de 0.

<?php
// Ejemplo de valor entero
$int = 75;
 
//Verificación de valores enteros de muestra
if(filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))){
    echo "<b>$int</b> Está en 0 a10en el rango de 0";
} else {
    echo "<b>$int</b> No está en 0 a10en el rango de 0";
}
?>
Prueba para ver‹/›