Como o PHP é uma linguagem dinâmica, qual é a melhor maneira de verificar se um campo fornecido está vazio?
Eu quero garantir que:
- null é considerado uma string vazia
- uma única string de espaço em branco é considerada vazia
- que "0" não é considerado vazio
Isto é o que eu tenho até agora:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
Deve haver uma maneira mais simples de fazer isso?
php
validation
Allain Lalonde
fonte
fonte
Respostas:
fonte
Post antigo, mas alguém pode precisar dele como eu;)
substitua
$str
por sua variável.NULL
e""
ambos retornam 0 ao usarstrlen
.fonte
if(strcmp('', $var) == 0)...
Use a função empty () do PHP. Os seguintes itens são considerados vazios
Para mais detalhes, verifique a função vazia
fonte
Aceito humildemente se estiver errado, mas testei por conta própria e descobri que o seguinte funciona para testar as variáveis de valor string (0) "" e NULL:
O que também pode ser revertido para testar o sucesso como tal:
fonte
Cuidado com os falsos negativos da
trim()
função - ela executa uma conversão para string antes de aparar e, portanto, retornará, por exemplo, "Array" se você passar uma matriz vazia. Isso pode não ser um problema, dependendo de como você processa seus dados, mas com o código que você fornece, um campo nomeadoquestion[]
pode ser fornecido nos dados do POST e parece ser uma sequência não vazia. Em vez disso, eu sugeriria:fonte
Não há maneira melhor, mas como é uma operação que você costuma fazer com bastante frequência, é melhor automatizar o processo.
A maioria das estruturas oferece uma maneira de tornar os argumentos de análise uma tarefa fácil. Você pode criar seu próprio objeto para isso. Exemplo rápido e sujo:
Symfony usa esse tipo de açúcar em massa.
Mas você está falando mais do que isso, com o seu "// Manipular erro aqui". Você está misturando 2 trabalhos: obtendo e processando os dados. Isto não é o mesmo.
Existem outros mecanismos que você pode usar para validar dados. Novamente, os frameworks podem mostrar as melhores práticas.
Crie objetos que representam os dados do seu formulário, anexe processos e volte a ele. Parece muito mais trabalho do que invadir um script PHP rápido (e é a primeira vez), mas é reutilizável, flexível e muito menos suscetível a erros, pois a validação de formulários com o PHP comum tende a se tornar rapidamente um código espaguete.
fonte
Este verifica matrizes e seqüências de caracteres:
fonte
para ser mais robusto (tabulação, retorno ...), eu defino:
fontes:
fonte
Quando você deseja verificar se um valor é fornecido para um campo, esse campo pode ser um
string
, umarray
ou não definido. Então, o seguinte é suficientefonte
empty () costumava trabalhar para isso, mas o comportamento de empty () mudou várias vezes. Como sempre, os documentos php são sempre a melhor fonte para o comportamento exato e os comentários nessas páginas geralmente fornecem um bom histórico das alterações ao longo do tempo. Se você deseja verificar a falta de propriedades do objeto, um método muito defensivo no momento é:
fonte