2009-09-06 11 views

Respuesta

43

Si usted está interesado en cualquier espacio en blanco (incluyendo las lengüetas, etc.), el uso \s

if (preg_match("/\\s/", $myString)) { 
    // there are spaces 
} 

si solo le interesan los espacios, entonces ni siquiera necesita una expresión regular:

if (strpos($myString, " ") !== false) 
+0

Tienes los parámetros strpos todo el camino equivocado. Debería ser: if (strpos ($ myString, "")! == falso) – ncatnow

+0

@ncatnow, gracias por el aviso. Eso ha estado ahí, mal, durante casi un año. : p – nickf

+0

¿sabe dónde un enlace a un documento que explica el \ s \ b \\ S, etc.? – Pacerier

3

También vea this StackOverflow question que trata esto.

Y, dependiendo de si se desea detectar pestañas y otros tipos de espacios en blanco, es posible que desee ver en la sintaxis de expresiones regulares de Perl para cosas tales como \ b \ w y [: space:]

+0

'\ b' probablemente no ayudaría, ya que coincidirá con el inicio y el final de la cadena: por ejemplo 'preg_match ("/\\ b/"," abc ")' == true – nickf

+0

Buen punto, solo pensaba en "límites de palabras" y no recordaba que coincidiría en el termina. – JYelton

0

se puede utilizar: seguramente trabajar

preg_match('/[\s]+/',.....) 
0
[\\S] 

caso- superiores 'S'.

0

¿Qué le parece usar ctype_graph para este propósito? Esto ampliaría el alcance del espacio para significar cualquier "char del espacio en blanco" que no imprima nada visible en la pantalla (como \ t, \ n) también. Sin embargo, esto es nativo y debe ser más rápido que preg_match.

$x = "string\twith\tspaces" ; 
if(ctype_graph($x)) 
    echo "\n string has no white spaces" ; 
else 
    echo "\n string has spaces" ; 
0

rápido de usar:

strstr($string, ' ');