2009-11-24 5 views
113

Comment faire exploser une chaîne par un ou plusieurs espaces ou tabulations?Éclater une chaîne par un ou plusieurs espaces ou tabulations

Exemple:

A  B  C  D 

Je veux en faire un tableau.

+0

zéro ou plusieurs espaces implique que soit chaque élément aura au plus un caractère, ou que vous aurez une infinité d'éléments vides. Êtes-vous sûr que c'est ce que vous voulez? – bdonlan

+0

Oui, cela devrait probablement être "un ou plusieurs espaces". –

Répondre

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

$ part dernier élément sera vide .. donc pour l'enlever array_pop ($ parts); – user889030

+1

La réponse de @lucsan doit être la meilleure réponse (https: // stackoverflow.com/a/38481324/1407491) –

19

Cela fonctionne:

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

Je pense que vous voulez preg_split:

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

@OP n'a pas d'importance , vous pouvez juste diviser sur un espace avec exploser. Jusqu'à ce que vous souhaitiez utiliser ces valeurs, passez en revue les valeurs éclatées et ignorez les blancs.

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

Qu'en est-il des valeurs délimitées par des tabulations? – dotancohen

+0

Les valeurs délimitées par des tabulations ne seront pas explosées, alors poussez. – NekojiruSou

41

à séparer par onglets:

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

Pour séparer par des espaces/tabs/newlines:

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

pour séparer par des espaces seul:

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

9

L'auteur a demandé d'exploser, vous pouvez utiliser exploser comme ça

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

Note: vous devez utiliser un guillemet double, pas un seul.

+0

A travaillé pour moi et est un peu plus simple que d'utiliser la puissance sombre des expressions régulières. – 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); 
    ?> 

Questions connexes