2009-11-24 15 views
113

Come posso esplodere una stringa con uno o più spazi o tabulazioni?Esplodi stringa da uno o più spazi o tabulazioni

Esempio:

A  B  C  D 

Voglio rendere questo un array.

+0

zero o più spazi implica che o ogni elemento avrà al massimo un carattere, o che avrete infiniti elementi vuoti. Sei sicuro che questo è quello che vuoi? – bdonlan

+0

Sì, probabilmente dovrebbe essere "uno o più spazi". –

risposta

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

$ parts last element sarà vuoto .. quindi per rimuoverlo array_pop ($ parts); – user889030

+1

La risposta di @lucsan deve essere la risposta migliore (https: // stackoverflow.it/a/38481324/1407491) –

19

Questo funziona:

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

Penso che si desidera preg_split:

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

@OP non importa , puoi semplicemente dividere uno spazio con l'esplosione. Fino a quando non si desidera utilizzare tali valori, scorrere i valori esplosi e eliminare gli spazi vuoti.

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

E i valori delimitati da tabulazione? – dotancohen

+0

I valori delimitati da tabulazione non verranno esplosi, quindi ugh. – NekojiruSou

41

Per separare da tabulazioni:

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

Per separare da spazi/schede/ritorni a capo:

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

per separare da spazi sola:

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

9

L'autore ha chiesto per esplodere, per è possibile utilizzare esplodere come questo

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

Nota: è necessario utilizzare virgolette doppie, non singole.

+0

Ha funzionato per me ed è un po 'più semplice dell'uso del potere oscuro delle espressioni regolari. – 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); 
    ?> 

Problemi correlati