Tengo una función isNotEmpty que devuelve verdadero si la cadena no está vacía y falsa si la cadena está vacía. Descubrí que no funciona si paso una cadena vacía a través de él.
function isNotEmpty($input)
{
$strTemp = $input;
$strTemp = trim($strTemp);
if(strTemp != '') //Also tried this "if(strlen($strTemp) > 0)"
{
return true;
}
return false;
}
La validación de la cadena usando isNotEmpty se realiza:
if(isNotEmpty($userinput['phoneNumber']))
{
//validate the phone number
}
else
{
echo "Phone number not entered<br/>";
}
Si la cadena está vacía, el resto no se ejecuta, no entiendo por qué, ¿alguien puede arrojar algo de luz sobre esto, por favor?
php
string
validation
bgosalci
fuente
fuente
Respuestas:
Problema simple en realidad. Cambio:
a
Posiblemente también quieras cambiarlo a:
dado
!= ''
que volverá verdadero si pasa es numérico 0 y algunos otros casos debido a la conversión automática de tipo de PHP .No debe usar la función vacía () incorporada para esto; ver comentarios y las tablas de comparación de tipos PHP .
fuente
PHP tiene una función incorporada llamada
empty()
la prueba se realiza escribiendoif(empty($string)){...}
Referencia php.net: php vacíofuente
Siempre uso una expresión regular para buscar una cadena vacía, que se remonta a los días CGI / Perl, y también con Javascript, entonces, ¿por qué no también con PHP, por ejemplo (aunque no probado)
Donde \ S representa cualquier carácter que no sea un espacio en blanco
fuente
.
, no coincide con las nuevas líneas,[\s\S]
es un truco para solucionar ese problema. Esto es común en JavaScript, pero en PHP puede usar la/s
bandera para hacer que el punto coincida con todos los caracteres. Y stackoverflow.com/a/4544646/5411817 menciona:(?s)
activa els
modo y(?-s)
desactiva si está desactivado. Una vez desactivado, cualquier seguimiento.
no coincidirá con una nueva línea. si desea activar / desactivar el interruptor en línea (incrustado dentro de la expresión regular) en lugar de como una bandera de expresión regular.En su
if
cláusula en la función, se refiere a una variablestrTemp
que no existe.$strTemp
existe, sin embargo.Pero PHP ya tiene una
empty()
función disponible; ¿Por qué hacer el tuyo?Desde php.net:
http://www.php.net/empty
fuente
PHP evalúa una cadena vacía como falsa, por lo que simplemente puede usar:
fuente
Solo usa la función strlen ()
fuente
Php 5.3
la función regrese5
si$s
es de tipoarray
.Php > 5.3
surgirá una excepción. Recomiendo usaris_string($s) && str_len($s) > 0
.>0
solo para fines de lectura.Solo escribo mi propia función, is_string para la verificación de tipos y strlen para verificar la longitud.
Aquí hay una pequeña prueba repl.it
EDITAR: También puede usar la función de recorte para probar si la cadena también está en blanco.
fuente
Necesitaba probar un campo vacío en PHP y usé
que funcionó bien para mí
fuente
Bueno, aquí está el método corto para verificar si la cadena está vacía o no.
fuente
strlen()
fue recomendado en 2014 en esta página. Su respuesta no agrega ningún valor nuevo.Simplemente puede lanzar a bool, no olvide manejar cero.
fuente
(bool)$str
es lo mismo que hacer!empty($str)
, y tiene el mismo problema con'0'
. Lea PHP Booleans , la sección "Convertir a booleano". Además, lo tienes al revés, debería ser!(bool)$string'
. O su función debería llamarse "isNotEmpty". En cualquier caso, está atrapado con un manejo incorrecto de '0'.0
problema, simplemente maneje eso antes de devolver la cadena fundida. Y muchas gracias, olvidé la negación!
(los nombres de funciones negadas son una mala práctica). Edité mi publicación.Sé que este hilo es bastante antiguo, pero solo quería compartir una de mis funciones. Esta función a continuación puede verificar cadenas vacías, cadenas con longitudes máximas, longitudes mínimas o longitud exacta. Si desea buscar cadenas vacías, simplemente ponga $ min_len y $ max_len como 0.
fuente
tal vez puedas probar esto
eso se debe a la configuración de php en php.ini
fuente
si tiene un campo llamado serial_number y desea marcar vacío, entonces
de esta manera, puede revisar todos los archivos en el bucle con otra función vacía
fuente
empty()
ya estaba recomendado en esta página en 2009.Esta es la solución corta y efectiva, exactamente lo que estás buscando:
fuente
null
a una cadena vacía para la comparación. En cuyo caso, sería mucho más claro decir lo que quiere decir:$input > ''
. Es decir, "realice una comparación léxica entre la cadena de entrada y una cadena vacía". O hacer caso omiso de los espacios en blanco en los extremos:trim($input) > ''
.$input
es'0'
. No está claro si php hace unanumeric
olexical
comparación, cuando el primer argumento es una cadena numérica.Tienes una respuesta pero en tu caso puedes usar
o
fuente
empty("0")
empty
- esta respuesta ya se ha dado, por lo que decirla nuevamente no aporta nada. Peor aún, como se ha discutido en los comentarios, está mal: cualquier valor equivalente a0
se considerará "vacío". 2.is_string
está equivocado de una manera diferente: una cadena vacía''
es una cadena, por lo que devolverá verdadero en ese caso, no puede hacer lo que hace la pregunta.