LonghornPHP 2026

Constantes predefinidas

As constantes abaixo são definidas por esta extensão e só estarão disponíveis quando a extensão tiver sido compilada no PHP ou tiver sido carregada dinamicamente em tempo de execução.

Constantes de Entrada

Estas constantes são usadas por filter_input() e filter_input_array().

INPUT_POST (int)

Variáveis POST.

INPUT_GET (int)

Variáveis GET.

Variáveis COOKIE.

INPUT_ENV (int)

Variáveis ENV.

INPUT_SERVER (int)

Variáveis SERVER.

INPUT_SESSION (int)

Variáveis SESSION. (Removida a partir do PHP 8.0.0; não estava implementada anteriormente)

INPUT_REQUEST (int)

Variáveis REQUEST. (Removida a partir do PHP 8.0.0; não estava implementada anteriormente)

Opções Genéricas de Filtros
FILTER_FLAG_NONE (int)

Sem flags.

FILTER_REQUIRE_SCALAR (int)

Opção usada para requerer que a entrada do filtro seja um escalar.

FILTER_REQUIRE_ARRAY (int)

Opção usada para requerer que a entrada do filtro seja um array.

FILTER_FORCE_ARRAY (int)

Esta opção encapsula entradas encalares em um array de um elemento para filtros que operam em arrays.

FILTER_NULL_ON_FAILURE (int)

Usa null ao invés de false em caso de falha.

Utilizável com qualquer filtro FILTER_VALIDATE_* de validação.

FILTER_THROW_ON_FAILURE (int)

Lança uma Filter\FilterFailedException quando um filtro de validação falhar, em vez de retornar false.

Pode ser usado com qualquer filtro de validação FILTER_VALIDATE_*.

Disponível a partir do PHP 8.5.0.

Opções de Filtro de Sanitização
FILTER_FLAG_STRIP_LOW (int)

Remove caracteres com valor ASCII menor que 32.

FILTER_FLAG_STRIP_HIGH (int)

Remove caracteres com valor ASCII maior que 127.

FILTER_FLAG_STRIP_BACKTICK (int)

Remove caracteres de acento grave (`).

FILTER_FLAG_ENCODE_LOW (int)

Codifica caracteres com valor ASCII menor que 32.

FILTER_FLAG_ENCODE_HIGH (int)

Codifica caracteres com valor ASCII maior que 127.

FILTER_FLAG_ENCODE_AMP (int)

Codifica &.

FILTER_FLAG_NO_ENCODE_QUOTES (int)

Não codifica aspas simples e duplas (' e ").

FILTER_FLAG_EMPTY_STRING_NULL (int)

Se a sanitização de uma string resultar em uma string vazia, converte o valor para null.

Filtros de Validação
FILTER_VALIDATE_BOOL (int)

Retorna true para "1", 1 incluindo as notações binária, octal e hexadecimal, 1.0 incluindo notação científica, "true", true, "on" e "yes".

Retorna false para "0", 0 incluindo as notações binária, octal e hexadecimal, 0.0 incluindo notação científica, "false", false, "off", "no" e "".

Valores string são comparados de forma insensível a maiúsculas/minúsculas. O valor de retorno para valores não booleanos depende da opção FILTER_NULL_ON_FAILURE. Se estiver definida, retorna null, caso contrário, false.

Opções disponíveis
default

Valor a retornar caso o filtro falhe.

Disponível a partir do PHP 8.0.0.

FILTER_VALIDATE_BOOLEAN (int)

Sinônimo de FILTER_VALIDATE_BOOL. O sinônimo estava disponível antes da introdução de seu nome canônico no PHP 8.0.0.

FILTER_VALIDATE_INT (int)

Valida se o valor é um inteiro, em caso de sucesso é convertido para o tipo int.

Nota:

Valores string são aparados usando trim() antes da validação.

Opções disponíveis
default

Valor a retornar caso o filtro falhe.

min_range

Valor só é válido se for maior ou igual que o valor fornecido.

max_range

Valor só é válido se for menor ou igual que o valor fornecido.

Constantes Opcionais
FILTER_FLAG_ALLOW_OCTAL (int)

Permite inteiros em notação octal (0[0-7]+).

FILTER_FLAG_ALLOW_HEX (int)

Permite inteiros em notação hexadecimal (0x[0-9a-fA-F]+).

FILTER_VALIDATE_FLOAT (int)

Valida se o valor é um float, em caso de sucesso é convertido para o tipo float.

Nota:

Valores string são aparados usando trim() antes da validação.

Opções disponíveis
default

Valor a retornar caso o filtro falhe.

decimal

min_range

Valor só é válido se for maior ou igual que o valor fornecido. Disponível a partir do PHP 7.4.0.

max_range

Valor só é válido se for menor ou igual que o valor fornecido. Disponível a partir do PHP 7.4.0.

Constantes opcionais
FILTER_FLAG_ALLOW_THOUSAND (int)

Aceita vírgulas (,), que normalmente representam separador de milhares em inglês.

FILTER_VALIDATE_REGEXP (int)

Valida o valor comparando com a expressão regular informada pela opção regexp.

Opções disponíveis
default

Valor a retornar caso o filtro falhe.

regexp

Expressão regular compatível com Perl.

FILTER_VALIDATE_URL (int)

Verifica se o URL é válido conforme a » RFC 2396.

Opções disponíveis
default

Valor a retornar caso o filtro falhe.

Constantes Opcionais
FILTER_FLAG_SCHEME_REQUIRED (int)

Requer que o URL contenha uma parte de esquema.

Aviso

DESCONTINUADA a partir do PHP 7.3.0 e REMOVIDA a partir do PHP 8.0.0. A razão é que fica sempre implícita pelo filtro FILTER_VALIDATE_URL.

FILTER_FLAG_HOST_REQUIRED (int)

Requer que o URL contenha uma parte de host.

Aviso

DESCONTINUADA a partir do PHP 7.3.0 e REMOVIDA a partir do PHP 8.0.0. A razão é que fica sempre implícita pelo filtro FILTER_VALIDATE_URL.

FILTER_FLAG_PATH_REQUIRED (int)

Requer que o URL contenha uma parte de caminho.

FILTER_FLAG_QUERY_REQUIRED (int)

Requer que o URL contenha uma parte de consulta.

Aviso

Um URL válido pode não especificar o protocolo HTTP (http://). Portanto, uma validação adicional pode ser necessária para determinar se o URL usa um protocolo esperado, por exemplo, ssh:// ou mailto:.

Aviso

Este filtro só funciona em URLs ASCII. Isto significa que os Nomes de Domínio Internacionalizados (IDN) serão sempre rejeitados.

FILTER_VALIDATE_DOMAIN (int)

Valida se o nome de domínio é válido de acordo com » RFC 952, » RFC 1034, » RFC 1035, » RFC 1123, » RFC 2732, e » RFC 2181.

Opções disponíveis
default

Valor a retornar caso o filtro falhe.

Constantes Opcionais
FILTER_FLAG_HOSTNAME (int)

Requer que hostnames iniciem com caracteres alfanuméricos e contenham apenas caracteres alfanuméricos ou hífen.

FILTER_VALIDATE_EMAIL (int)

Verifica se o valor é um endereço válido de e-mail.

A validação é realizada conforme a sintaxe addr-spec na » RFC 822. Contudo, comentários, espaços em branco e domínios sem ponto não são suportados, e por isso serão rejeitados.

Opções disponíveis
default

Valor a retornar caso o filtro falhe.

Constantes Opcionais
FILTER_FLAG_EMAIL_UNICODE (int)

Aceita caracteres Unicode na parte local. Disponível a partir do PHP 7.1.0.

Aviso

A validação de e-mail é complexa e a única maneira verdadeira de confirmar se um e-mail é válido e existe é enviando um e-mail para o endereço.

FILTER_VALIDATE_IP (int)

Valida o valor como um endereço IP.

Opções disponíveis
default

Valor a retornar caso o filtro falhe.

Constantes Opcionais
FILTER_FLAG_IPV4 (int)

Permite endereço IPv4.

FILTER_FLAG_IPV6 (int)

Permite endereço IPv6.

FILTER_FLAG_NO_RES_RANGE (int)

Nega endereços reservados.

Estes são os intervalos marcados como Reserved-By-Protocol (reservados por protocolo) na » RFC 6890.

Para IPv4, corresponden aos seguintes intervalos: 0.0.0.0/8, 169.254.0.0/16, 127.0.0.0/8, 240.0.0.0/4.

E para IPv6, corresponden aos seguintes intervalos: ::1/128, ::/128, ::FFFF:0:0/96, FE80::/10.

FILTER_FLAG_NO_PRIV_RANGE (int)

Nega endereços privados.

São os endereços IPv4 que estão nestas faixas: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16.

E são os endereços IPv6 que inicial com FD ou FC.

FILTER_FLAG_GLOBAL_RANGE (int)

Permite apenas endereços globais. Podem ser encontrados na » RFC 6890 onde o atributo Global é True. Disponível a partir do PHP 8.2.0.

FILTER_VALIDATE_MAC (int)

Valida se o valor é um endereço MAC.

Opções disponíveis
default

Valor a retornar caso o filtro falhe.

Filtros de Sanitização
FILTER_UNSAFE_RAW (int)

Este filtro não faz nada.

Entretanto, ele pode remover ou codificar caracteres especiais se usado em conjunto com as opções FILTER_FLAG_STRIP_* e FILTER_FLAG_ENCODE_* de filtro de sanitização.

FILTER_DEFAULT (int)

Sinônimo de FILTER_UNSAFE_RAW.

FILTER_SANITIZE_STRING (int)

Este filtro remove etiquetas e codifica HTML com aspas duplas e simples.

Opcionalmente, ele pode remover ou codificar caracteres especificados se usado junto com as opções de filtro de sanitização FILTER_FLAG_STRIP_* e FILTER_FLAG_ENCODE_*.

O comportamento da codificação de aspas pode ser desativado usando a opção de filtro FILTER_FLAG_NO_ENCODE_QUOTES

Aviso

Descontinuado a partir do PHP 8.1.0, use htmlspecialchars() em seu lugar.

Aviso

A maneira como esse filtro remove as etiquetas não é equivalente a strip_tags().

FILTER_SANITIZE_STRIPPED (int)

Sinônimo de FILTER_SANITIZE_STRING.

Aviso

Descontinuado a partir do PHP 8.1.0, use htmlspecialchars() em seu lugar.

FILTER_SANITIZE_ENCODED (int)

Este filtra codifica uma string em URL.

Opcionalmente pode codificar caracteres especificados se usado junto com as opções de filtro de sanitização FILTER_FLAG_STRIP_* e FILTER_FLAG_ENCODE_*.

FILTER_SANITIZE_SPECIAL_CHARS (int)

Este filtra codifica, em HTML, ', ", <, >, & e caracteres com um valor ASCII menor que 32. Diferentemente do filtro FILTER_SANITIZE_FULL_SPECIAL_CHARS, o filtro FILTER_SANITIZE_SPECIAL_CHARS ignora a opção FILTER_FLAG_NO_ENCODE_QUOTES.

Opcionalmente pode codificar caracteres especificados se usado junto com as opções de filtro de sanitização FILTER_FLAG_STRIP_*, e pode codificar caracteres com valores ASCII maiores que 127 usando FILTER_FLAG_ENCODE_HIGH.

FILTER_SANITIZE_FULL_SPECIAL_CHARS (int)

Este filtro é equivalente a chamar htmlspecialchars() com ENT_QUOTES definida.

O comportamento da codificação de aspas pode ser desabilitado usando a opção de filtro FILTER_FLAG_NO_ENCODE_QUOTES.

Aviso

Assim como htmlspecialchars(), este filtro reconhece a configuração INI default_charset. Se for detectada uma sequência de bytes que constitui um caractere inválido no conjunto de caracteres atual, a string inteira será rejeitada, resultando no retorno de uma string vazia.

FILTER_SANITIZE_EMAIL (int)

Sanitiza a string removendo todos os caracteres exceto as letras latinas ([a-zA-Z]), dígitos ([0-9]) e os caracteres especiais !#$%&'*+-=?^_`{|}~@.[].

FILTER_SANITIZE_URL (int)

Sanitiza a string removendo todos os caracteres exceto as letras latinas ([a-zA-Z]), dígitos ([0-9]) e os caracteres especiais $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=.

FILTER_SANITIZE_NUMBER_INT (int)

Sanitiza a string removendo todos os caracteres exceto ([0-9]), sinal de adição (+), e sinal de subtração (-).

FILTER_SANITIZE_NUMBER_FLOAT (int)

Sanitiza a string removendo todos os caracteres exceto ([0-9]), sinal de adição (+), e sinal de subtração (-).

Constantes Opcionais
FILTER_FLAG_ALLOW_FRACTION (int)

Aceita o caractere ponto (.), que normalmente representa o separador entre as partes inteira e fracionária em inglês.

FILTER_FLAG_ALLOW_THOUSAND (int)

Aceita vírgulas (,), que normalmente representam separador de milhares em inglês.

FILTER_FLAG_ALLOW_SCIENTIFIC (int)

Aceita números em notação científica permitindo os caracteres e e E.

Aviso

Se a opção FILTER_FLAG_ALLOW_FRACTION não for usada, o separador de decimais será removido, alterando o valor recebido.

<?php
$number = '12.34';

var_dump(filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT));
var_dump(filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
?>

O exemplo acima produzirá:

string(4) "1234"
string(5) "12.34"
FILTER_SANITIZE_ADD_SLASHES (int)

Aplica addslashes() à entrada. Disponível a partir do PHP 7.3.0.

FILTER_SANITIZE_MAGIC_QUOTES (int)

Sinônimo de FILTER_SANITIZE_ADD_SLASHES.

Aviso

DESCONTINUADA a partir do PHP 7.3.0 e REMOVIDA a partir do PHP 8.0.0.

Filtro Definido pelo Usuário
FILTER_CALLBACK (int)

Este filtro delega a filtragem a uma função definida pelo usuário. O callable é passado através do parâmetro options comom o valor associado à chave 'options'.

A função deve ter a seguinte assinatura:

function callback(string $value): mixed
value

O valor a ser filtrado.

Nota:

O valor retornado pela função será o valor retornado pela função de filtro chamada.

Exemplo #1 Exemplo de uso de FILTER_CALLBACK para validar um login

<?php
function validate_login(string $value): ?string
{
    if (strlen($value) >= 5 && ctype_alnum($value)) {
        return $value;
    }
    return null;
}

$login = "L0ginValido";
$filtered_login = filter_var($login, FILTER_CALLBACK, ['options' => 'validate_login']);
var_dump($filtered_login);

$login = "login f&lso";
$filtered_login = filter_var($login, FILTER_CALLBACK, ['options' => 'validate_login']);
var_dump($filtered_login);
?>

O exemplo acima produzirá:

string(11) "L0ginValido"
NULL
Aviso

Este filtro não pode ser usado com nenhuma outra opção de filtro, como por exemplo, FILTER_NULL_ON_FAILURE.

adicionar nota

Notas de Usuários 4 notes

up
13
shaman_master at list dot ru
6 years ago
Note: FILTER_NULL_ON_FAILURE, FILTER_REQUIRE_SCALAR, FILTER_REQUIRE_ARRAY and FILTER_FORCE_ARRAY dont have prefix "FILTER_FLAG_" but they are FLAGS!
up
1
steven at nevvix dot com
6 months ago
<?php
+    // Handle FILTER_FLAG_STRIP_BACKTICK
+    // Fixes bug PHP_VERSION < 5.5.24
+    if ($flags & FILTER_FLAG_STRIP_BACKTICK) {
+        $output = str_replace('`', '', $output);
+    }
?>

Revised version:
<?php
function filter_sanitize_string(mixed $value, int $flags = 0): string|false|null {
    if ($flags & FILTER_FLAG_EMPTY_STRING_NULL && $value === "") {
        return null;
    }
    if (!(is_scalar($value) || is_null($value))) {
        return false;
    }

    // Strip HTML tags and remove NUL bytes
    $value = (string)$value;
    $value = strip_tags($value);
    $value = str_replace("\0", "", $value);

    // High/Low ASCII handling (Byte-by-byte to match legacy behavior)
    $output = "";
    for ($i = 0, $n = strlen($value); $i < $n; $i++) {
        $char = $value[$i];
        $ord = ord($char);

        if ($ord < 32) {
            if ($flags & FILTER_FLAG_STRIP_LOW) continue;
            if ($flags & FILTER_FLAG_ENCODE_LOW) {
                $output .= "&#$ord;"; // Legacy decimal encoding
                continue;
            }
        }

        if ($ord > 127) {
            if ($flags & FILTER_FLAG_STRIP_HIGH) continue;
            if ($flags & FILTER_FLAG_ENCODE_HIGH) {
                $output .= "&#$ord;"; // This turns © into &#194;&#169; (©)
                continue;
            }
        }

        $output .= $char;
    }

    // Strip backticks
    // Fixes bug PHP_VERSION < 5.5.24
    if ($flags & FILTER_FLAG_STRIP_BACKTICK) {
        $output = str_replace('`', '', $output);
    }

    // Legacy ONLY encoded ampersands if FILTER_FLAG_ENCODE_AMP was set
    if ($flags & FILTER_FLAG_ENCODE_AMP) {
        $output = str_replace('&', '&amp;', $output);
    }

    // Replicate legacy quote encoding exactly (&#39; and &#34;)
    if (!($flags & FILTER_FLAG_NO_ENCODE_QUOTES)) {
        $output = str_replace(["'", '"'], ['&#39;', '&#34;'], $output);
    }

    return $output;
}
up
1
steven at nevvix dot com
6 months ago
We can add FILTER_FLAG_EMPTY_STRING_NULL:
<?php
- function filter_sanitize_string(mixed $value, int $flags = 0): string|false {
+ function filter_sanitize_string(mixed $value, int $flags = 0): string|false|null {
+     if ($flags & FILTER_FLAG_EMPTY_STRING_NULL && $value === "") {
+         return null;
+    }
?>

For FILTER_FLAG_STRIP_BACKTICK, there is a bug history
(https://bugs.php.net/bug.php?id=69202)
so I did not attempt to code compatility through version history.
up
1
steven at nevvix dot com
6 months ago
We're all looking for a polyfill to replace the FILTER_SANITIZE_STRING flag, deprecated as of PHP 8.1.0,
that behaves exactly the same for scalar and non-scalar values.
(Using htmlspecialchars() and strip_tags() are not returning exactly the same output.)

<?php
function filter_sanitize_string(mixed $value, int $flags = 0): string|false {
    if (!(is_scalar($value) || is_null($value))) {
        return false;
    }

    // Strip HTML tags and remove NUL bytes
    $value = (string)$value;
    $value = strip_tags($value);
    $value = str_replace("\0", "", $value);

    // High/Low ASCII handling (Byte-by-byte to match legacy behavior)
    $output = "";
    for ($i = 0, $n = strlen($value); $i < $n; $i++) {
        $char = $value[$i];
        $ord = ord($char);

        if ($ord < 32) {
            if ($flags & FILTER_FLAG_STRIP_LOW) continue;
            if ($flags & FILTER_FLAG_ENCODE_LOW) {
                $output .= "&#$ord;"; // Legacy decimal encoding
                continue;
            }
        }

        if ($ord > 127) {
            if ($flags & FILTER_FLAG_STRIP_HIGH) continue;
            if ($flags & FILTER_FLAG_ENCODE_HIGH) {
                $output .= "&#$ord;"; // This turns © into &#194;&#169; (©)
                continue;
            }
        }

        $output .= $char;
    }

    // Legacy ONLY encoded & if FILTER_FLAG_ENCODE_AMP was set.
    if ($flags & FILTER_FLAG_ENCODE_AMP) {
        $output = str_replace('&', '&amp;', $output);
    }

    // Replicate legacy quote encoding exactly (&#39; and &#34;)
    if (!($flags & FILTER_FLAG_NO_ENCODE_QUOTES)) {
        $output = str_replace(["'", '"'], ['&#39;', '&#34;'], $output);
    }

    return $output;
}

// Tests
$string = "It's a \"test\" \x02 <script> > & ©";

// Deprecated example:
$sanitized = filter_var($string, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_ENCODE_HIGH);
var_dump($sanitized);

// Polyfill example:
$sanitized = filter_sanitize_string($string, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_ENCODE_HIGH);
var_dump($sanitized);

// Polyfill in filter_var() callback:
$sanitized = filter_var($string, FILTER_CALLBACK, [
    'options' => function($value) {
        return filter_sanitize_string($value, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_ENCODE_HIGH);
    }
]);
var_dump($sanitized);
?>

Output:
string(44) "It&#39;s a &#34;test&#34;   > & &#194;&#169;"
string(44) "It&#39;s a &#34;test&#34;   > & &#194;&#169;"
string(44) "It&#39;s a &#34;test&#34;   > & &#194;&#169;"
To Top