Dado que PHP es un lenguaje dinámico, ¿cuál es la mejor manera de verificar si un campo proporcionado está vacío?
Quiero asegurarme de que:
- nulo se considera una cadena vacía
- una cadena de solo espacio en blanco se considera vacía
- que "0" no se considera vacío
Esto es lo que tengo hasta ahora:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
Debe haber una manera más simple de hacer esto?
php
validation
Allain Lalonde
fuente
fuente
Respuestas:
fuente
Publicación anterior pero alguien podría necesitarla como yo;)
reemplace
$str
con su variable.NULL
y""
ambos devuelven 0 cuando se usastrlen
.fuente
if(strcmp('', $var) == 0)...
Use la función empty () de PHP. Las siguientes cosas se consideran vacías.
Para más detalles verifique la función vacía
fuente
Aceptaré humildemente si me equivoco, pero lo probé por mi cuenta y descubrí que lo siguiente funciona para probar las variables de valor string (0) "" y NULL:
Lo que también podría revertirse para probar el éxito como tal:
fuente
Tenga cuidado con los falsos negativos de la
trim()
función: realiza una conversión de cadena a cadena antes de recortar y, por lo tanto, devolverá, por ejemplo, "Array" si le pasa una matriz vacía. Es posible que eso no sea un problema, dependiendo de cómo procese sus datos, pero con el código que proporciona, un campo denominadoquestion[]
podría proporcionarse en los datos POST y parecer una cadena no vacía. En cambio, sugeriría:fuente
No hay mejor manera, pero como es una operación que generalmente haces con bastante frecuencia, será mejor que automatices el proceso.
La mayoría de los marcos ofrecen una manera de hacer que el análisis de argumentos sea una tarea fácil. Puedes construir tu propio objeto para eso. Ejemplo rápido y sucio:
Symfony usa ese tipo de azúcar de forma masiva.
Pero está hablando de más que eso, con su "// Manejar error aquí". Está mezclando 2 trabajos: obtener los datos y procesarlos. Esto no es lo mismo en absoluto.
Existen otros mecanismos que puede usar para validar datos. Una vez más, los marcos pueden mostrarle las mejores prácticas.
Cree objetos que representen los datos de su formulario, luego adjunte procesos y recurra a ellos. Suena mucho más trabajo que piratear un script PHP rápido (y es la primera vez), pero es reutilizable, flexible y mucho menos propenso a errores, ya que la validación de formularios con PHP habitual tiende a convertirse rápidamente en código spaguetti.
fuente
Éste verifica matrices y cadenas:
fuente
para ser más robusto (tabulación, retorno ...), defino:
fuentes:
fuente
Cuando desee comprobar si se proporciona un valor para un campo, ese campo puede ser a
string
, anarray
o no definido. Entonces, lo siguiente es suficientefuente
empty () solía funcionar para esto, pero el comportamiento de empty () ha cambiado varias veces. Como siempre, los documentos php son siempre la mejor fuente de comportamiento exacto y los comentarios en esas páginas generalmente proporcionan un buen historial de los cambios a lo largo del tiempo. Si desea verificar la falta de propiedades del objeto, un método muy defensivo en este momento es:
fuente