2009-11-24 8 views
113

¿Cómo puedo explotar una cadena por uno o más espacios o pestañas?Explotar cadena por uno o más espacios o pestañas

Ejemplo:

A  B  C  D 

Quiero hacer esta una matriz.

+0

cero o más espacios implica que, o bien cada elemento tendrá como máximo un carácter, o que va a tener un número infinito de elementos vacíos. ¿Estás seguro de que esto es lo que quieres? – bdonlan

+0

Sí, eso debería ser probablemente "uno o más espacios". –

Respuesta

261
$parts = preg_split('/\s+/', $str); 
+1

$ parts El último elemento estará en blanco ... para eliminarlo array_pop ($ parts); – user889030

+1

La respuesta de @lucsan debe ser la mejor respuesta (https: // stackoverflow.com/a/38481324/1407491) –

19

Esto funciona:

$string = 'A B C   D'; 
$arr = preg_split('/[\s]+/', $string); 
8

Creo que quieres preg_split:

$input = "A B C D"; 
$words = preg_split('/\s+/', $input); 
var_dump($words); 
-5

@OP no importa , puedes simplemente dividir en un espacio con explotar. Hasta que desee usar esos valores, itere sobre los valores desglosados ​​y descarte los espacios en blanco.

$str = "A  B  C  D"; 
$s = explode(" ",$str); 
foreach ($s as $a=>$b){  
    if (trim($b)) { 
    print "using $b\n"; 
    } 
} 
+4

¿Qué ocurre con los valores delimitados por tabulaciones? – dotancohen

+0

Los valores delimitados por tabuladores no se explotarán, entonces ugh. – NekojiruSou

41

Para separar por pestañas:

$comp = preg_split("/[\t]/", $var); 

Para separar por espacios/pestañas/saltos de línea:

$comp = preg_split('/\s+/', $var); 

para separar por espacios solo:

$comp = preg_split('/ +/', $var);

9

El autor pidió a explotar, a usted puede utilizar explotar como este

$resultArray = explode("\t", $inputString);

Nota: debe utilizar comillas dobles, no solo.

+0

Funcionó para mí y es un poco más simple que usar el poder oscuro de las expresiones regulares. – ddtpoison777

-2
Explode string by one or more spaces or tabs in php example as follow: 

    <?php 
     $str = "test1 test2 test3  test4"; 
     $result = preg_split('/[\s]+/', $str); 
     var_dump($result); 
    ?> 

    /** To seperate by spaces alone: **/ 
    <?php 
     $string = "p q r s t"; 
     $res = preg_split('/ +/', $string); 
     var_dump($res); 
    ?> 

Cuestiones relacionadas