W3docs

filter_id()

Aprenda como a função filter_id() do PHP converte o nome de um filtro no seu ID inteiro, com exemplos, valores de retorno e erros comuns.

Introdução

filter_id() é uma função PHP pequena, mas útil, que faz uma única coisa: recebe o nome de um filtro (uma string como "validate_email") e retorna o ID numérico desse filtro — o inteiro que as constantes FILTER_VALIDATE_EMAIL, FILTER_SANITIZE_STRING e similares guardam internamente.

É essencialmente o inverso de filter_list(), que fornece a lista de nomes dos filtros. Você recorre a filter_id() quando tem o nome de um filtro como string — geralmente proveniente de configuração, banco de dados ou entrada do usuário — e precisa do inteiro que filter_var() e filter_input() esperam.

Esta página abrange a sintaxe, os valores de retorno, um exemplo executável e o erro mais comum que as pessoas cometem com ela.

Sintaxe

filter_id(string $name): int|false

Recebe um único parâmetro:

  • $name — o nome do filtro como string, por exemplo "validate_int", "validate_email", "sanitize_email". São os nomes em letras minúsculas retornados por filter_list(), não os nomes das constantes FILTER_*.

Retorna o ID inteiro do filtro correspondente, ou false se nenhum filtro tiver esse nome.

Passe o nome do filtro, não o nome da constante

Aqui está o ponto que confunde as pessoas. O argumento é o nome curto do filtro em letras minúsculas — não a constante FILTER_VALIDATE_EMAIL e nem a string "FILTER_VALIDATE_EMAIL".

<?php

var_dump(filter_id('validate_email'));        // int(274)  ✅ correct name
var_dump(filter_id('FILTER_VALIDATE_EMAIL')); // bool(false) ❌ that is the constant, not the name
var_dump(filter_id('not_a_real_filter'));     // bool(false) ❌ unknown name

Como um nome desconhecido retorna false, sempre verifique o resultado antes de usá-lo como ID de filtro. Um false seria silenciosamente convertido para 0 se passado onde um inteiro é esperado.

Um exemplo prático

Um caso de uso realista: você permite que os usuários escolham uma regra de validação pelo nome (a partir de um formulário, arquivo de configuração ou requisição API) e precisa aplicá-la dinamicamente. filter_id() converte esse nome no ID que filter_var() precisa.

<?php

$ruleName = 'validate_email';          // could come from user input or config
$value    = '[email protected]';

$filterId = filter_id($ruleName);

if ($filterId === false) {
    echo "Unknown filter: $ruleName";
} elseif (filter_var($value, $filterId) !== false) {
    echo "'$value' passed the '$ruleName' filter (id $filterId).";
} else {
    echo "'$value' failed the '$ruleName' filter.";
}
// Output: '[email protected]' passed the 'validate_email' filter (id 274).

Observe a comparação estrita === false: um filtro válido como int tem ID 257, que é verdadeiro, mas depender de veracidade solta ainda trataria incorretamente um filtro desconhecido. Comparar explicitamente com false mantém os dois casos distintos.

Descobrindo nomes de filtros válidos

Para ver exatamente quais nomes filter_id() aceita, itere sobre filter_list():

<?php

foreach (filter_list() as $name) {
    echo $name . ' => ' . filter_id($name) . PHP_EOL;
}
// int => 257
// boolean => 258
// validate_email => 274
// validate_url => 273
// sanitize... and so on

Quando usar

  • Validação dinâmica — quando o filtro a ser aplicado é decidido em tempo de execução a partir de uma string.
  • Mapeamento de configuração para filtros — convertendo nomes de regras legíveis por humanos em um arquivo de configuração para os IDs que filter_var() / filter_input() requerem.
  • Introspecção / ferramentas — listando os filtros disponíveis e seus IDs.

Se você já conhece o filtro no momento da escrita, pule filter_id() e use a constante diretamente (filter_var($email, FILTER_VALIDATE_EMAIL)) — é mais claro e evita uma consulta.

Funções relacionadas

  • filter_list() — obtém todos os nomes de filtros suportados.
  • filter_var() — filtra uma única variável por ID de filtro.
  • filter_input() — filtra um valor proveniente de uma fonte de entrada.
  • php-filters — visão geral da extensão de filtros do PHP.

Prática

Prática
Qual é a finalidade da função filter_list() no PHP?
Qual é a finalidade da função filter_list() no PHP?
Was this page helpful?