2009-07-21 94 views
27

¿Cómo podría detectar espacios en blanco dentro de una cadena? Por ejemplo, tengo una cadena de nombre como:PHP - detectar espacios en blanco entre cadenas

"Jane Doe"

Tenga en cuenta que no quiero para recortar o reemplazarlo, simplemente detectar si existe un espacio en blanco entre la primera y la segunda cadena.

+1

hola solo quiero preguntar, ¿es ctype_space (string $ text) en phpmanual http://php.net/manual/en/function.ctype-space.php no funcionará para detectar el espacio en blanco? – user1149244

Respuesta

74

Uso preg_match según lo sugerido por Josh:

<?php 

$foo = "Dave Smith"; 
$bar = "SamSpade"; 
$baz = "Dave\t\t\tSmith"; 

var_dump(preg_match('/\s/',$foo)); 
var_dump(preg_match('/\s/',$bar)); 
var_dump(preg_match('/\s/',$baz)); 

SALIDAS:

int(1) 
int(0) 
int(1) 
+3

¡Ja! Lo sugiero, se sube: -) Primero fue el primero en dar un ejemplo real ... – Josh

+0

Ha, sí. Siempre busco ejemplos concretos si nadie ya me ha proporcionado uno. Lástima que el OP parece haber seleccionado lo anterior como su respuesta: - \ – hobodave

+0

supongo que siempre he considerado espacio en blanco el espacio como espacio a menos que uses entidades html. –

8

Puede comprobar solo caracteres alfanuméricos, cuyo espacio en blanco no lo es. También podrías hacer strpos por un espacio.

if(strpos($string, " ") !== false) 
{ 
    // error 
} 
+2

Lo quiere como strpos ($ string, "") en su lugar. Haystack primero, luego aguja – ThoKra

+0

Tenga en cuenta que esto solo detectará espacios, no \ r \ t \ n etc. – Josh

+0

¿No es un espacio en blanco? – niteria

0

http://no.php.net/strpos

<?php 
if(strpos('Jane Doe', ' ') > 0) 
    echo 'Including space'; 
else 
    echo 'Without space'; 
?> 
+1

Esto no funcionará si el primer carácter es un espacio - "> 0" debería ser "! == falso" – Greg

+0

Lo sé, me gustó porque parecía que quería ver si se trataba de varios nombres, no de "Nombre";) – ThoKra

8

¿No sería preg_match("/\s/",$string) trabajo? La ventaja de esto sobre strpos es que detectará cualquier espacio en blanco, no solo espacios.

+1

Tengo miedo de que si llamo a mi motor de expresiones regulares para encontrar algo como un personaje, se vea enojado conmigo y empezar a emitir lenguaje profano :( – Kai

+1

¡Tal vez no lo alimentes lo suficiente! ;-) – Josh

0
// returns no. of matches if $str has nothing but alphabets,digits and spaces. 
function is_alnumspace($str){ 
    return preg_match('/^[a-z0-9 ]+$/i',$str); 
} 
+0

'[a-z]' no cubre caracteres alfabéticos. – tchrist

+0

Hace con/i –

0
// returns no. of matches if $str has nothing but alphabets,digits and spaces. function 

    is_alnumspace($str) { 
      return preg_match('/^[A-Za-z0-9 ]+$/i',$str); 
    } 

// This variation allows uppercase and lowercase letters. 
+1

Eso no es correcto.'\ pL' es para letras, no' [A-Z] '. Y los dígitos son '\ d' o' \ p {Nd} 'o podría decirse que' \ pN'. Los alfabetos son '\ p {Alphabetic}', pero no creo que PHP soporte algo tan útil y necesario como eso. – tchrist

5

Puedes usar algo como esto:

if (strpos($r, ' ') > 0) { 
    echo 'A white space exists between the string'; 
} 
else 
{ 
    echo 'There is no white space in the string'; 
} 

Esto detectará un espacio, pero no cualquier otro tipo de espacio en blanco.

Cuestiones relacionadas