2010-06-07 34 views
42

Duplicar posible:
If string only contains spaces?Compruebe si la cadena es solo un espacio en blanco?

no quiero cambiar una cadena ni quiero para comprobar si contiene espacio en blanco. Quiero comprobar si toda la cadena es SOLO espacio en blanco. ¿Cuál es la mejor manera de hacer eso?

+0

@ Dan McG que debe aspirar a la búsqueda porque Juro Busqué esto antes de lo publicado. –

+0

La pregunta puede estar duplicada, pero las respuestas no. – webbiedave

+0

@webbiedave Las respuestas son similares. ¿De cuántas formas necesita verificar una cadena de espacio en blanco espacial? –

Respuesta

93

Ésta será la forma más rápida:

$str = '  '; 
if (ctype_space($str)) { 

} 

devuelve falso en cadena vacía porque no vacío es de espacio en blanco. Si necesita incluir una cadena vacía, puede agregar || $str == '' Esto dará como resultado una ejecución más rápida que la expresión regular o el recorte.

ctype_space

+8

Wow, no me imaginaba que podría ser mucho más simple que el recorte, pero supongo que sí. +1 para una función que nunca he visto o usado. –

+1

+1 Esto resuelve exactamente cuál es el problema. –

+1

Salida: http://php.net/manual/en/book.ctype.php Compruebe si hay caracteres alfanuméricos (s) ctype_alpha - Chequear posibles caracteres alfabéticos (s) ctype_cntrl - Chequear posibles caracteres (s) de control ctype_digit - Chequear posibles caracteres numéricos (s) ctype_graph - Compruebe si hay algún personaje (s) imprimible, exceptuando el espacio ctype_lower - Chequear posibles caracteres en minúscula (s) ctype_print - Chequear posibles caracteres imprimibles (s) ctype_punct - Compruebe si hay cualquier carácter imprimible que no es un espacio en blanco o un carácter alfanumérico ctype_space - Comprobar caracteres en el espacio en blanco ctype_upper - Verifique si upperca ... –

34

desde el ajuste devuelve una cadena con espacios en blanco eliminado, utilizar eso para comprobar

if (trim($str) == '') 
{ 
//string is only whitespace 
} 
+0

Hmm, de hecho, más rápido que la ruta preg_ * .. – Wrikken

+1

+1 para una solución no regex. No es que haya algún problema con Regex. –

+4

Solo recuerda que el ajuste convertirá todo lo que pases en una cuerda. yo.e (trim (false) == '') devolverá true, que puede quedar fuera de los requisitos del póster original (pero lo más probable es que esté bien) –

3

preg_match('/^\s*$/',$string)

cambio * a + si está vacío, no se permite

+0

¿Qué significa '\ s' significa? Espacio no blanco? –

+0

'\ s' significa espacios en blanco –

+0

@John, como se dijo, espacios en blanco, tal vez confundiendo la clase de caracteres^([^ p] = nada no 'p') con '^ p' (= cadena tiene que comenzar por p) – Wrikken

10
if(trim($str) == "") 
    // the string is only whitespace 

Esto debe hacer el truco .

Cuestiones relacionadas