2011-02-16 12 views
9

Tengo una entrada donde un usuario puede escribir en varias palabras, y se les dice que las separen con un espacio. Así que de entrada puede tener este aspecto:División de una cadena en PHP con cada espacio en blanco

foo 

o como esto:

foo bar php js 

¿Cómo puedo comprobar los espacios, y si hay espacios, dividir las palabras, a continuación, poner todo en una matriz? Voy a recorrer esa matriz en mi programa. Soy nuevo en el manejo de cadenas de este tipo.

+11

[Kaboom.] (http://www.php.net/explode) – BoltClock

Respuesta

43

Ver explode

// Example 1 
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; 
$pieces = explode(" ", $pizza); 
echo $pieces[0]; // piece1 
echo $pieces[1]; // piece2 
0

Como dijo Daniel, explode() es perfecto para este tipo de situación. También puede consultar preg_split() (para referencia futura) ya que acepta una expresión regular en lugar de solo un delimitador simple y le permitirá dividir la entrada en un patrón más complejo.

+2

'split' es obsoleto y debe ser evitado. Si necesita expresiones regulares, use 'preg_split' en su lugar ... – ircmaxell

+0

@ircmaxell Actualizado para reflejar eso. Es desafortunado que los entornos de producción tiendan a funcionar detrás de la última versión, se me olvida que algunas cosas están en desuso en 5.3 – Endophage

8

explode hará todo por usted y foreach se puede utilizar para recuperar los valores de la matriz de nuevo. El código completo será algo así como el siguiente:

$str = "foo bar php js"; 
$arr = explode(" ", $str); 

//print all the value which are in the array 
foreach($arr as $v){ 
    echo $v; 
} 

Espero que esto te ayude.

1

daniel ya ha publicado acerca de la parte deslizante, permítanme agregar la verificación de la parte del espacio als.

$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; 
$pizaa = trim($pizza); 
if(strpos($pizza,' ') >= 0) 
{ 

$pieces = explode(" ", $pizza); 
echo $pieces[0]; // piece1 
echo $pieces[1]; // piece2 
}else { 
    echo $pizza; 
} 
0

Para fines de optimización, creo que es mejor para eliminar el exceso de espacios como espacios dobles antes de utilizar la función de explotar. por ejemplo: si tiene "foo bar php js ", esta cadena debe convertirse en "foo bar php js" antes de usar la función de explosión. usted puede probar este código:

$charSet = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $charSet); 
$charSet = rtrim($charSet); 
$charSetArray = explode(" ", $charSet); 
echo $charSetArray[0]; 
echo $charSetArray[1]; 
Cuestiones relacionadas