Explodieren Sie die Zeichenfolge durch ein oder mehrere Leerzeichen oder Tabulatoren


141

Wie kann ich eine Zeichenfolge durch ein oder mehrere Leerzeichen oder Tabulatoren auflösen?

Beispiel:

A      B      C      D

Ich möchte dies zu einem Array machen.


Null oder mehr Leerzeichen bedeuten, dass entweder jedes Element höchstens ein Zeichen enthält oder dass Sie unendlich viele leere Elemente haben. Bist du sicher, dass du das willst?
Bdonlan

Ja, das sollte wahrscheinlich "ein oder mehrere Leerzeichen" sein.
Michael Myers

Antworten:



49

So trennen Sie nach Registerkarten:

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

So trennen Sie durch Leerzeichen / Tabulatoren / Zeilenumbrüche:

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

Nur durch Leerzeichen trennen:

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


23

Das funktioniert:

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

19

Der Autor hat nach Explosion gefragt, damit Sie Explosion so verwenden können

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

Hinweis: Sie müssen ein doppeltes Anführungszeichen verwenden, kein einfaches.


Hat für mich funktioniert und ist ein bisschen einfacher als die dunkle Kraft regulärer Ausdrücke zu nutzen.
David 'der kahle Ingwer'

8
Aber er fragte nach "Leerzeichen oder Tabulatoren" und dies explodiert nur für Tabulatoren.
Jeff

2
Ich bin hierher gekommen, um nach explodierenden Räumen zu suchen. Ich bin tief im Inneren traurig darüber.
Sergio A.




0

Die Antworten anderer Leute (Ben James) sind ziemlich gut und ich habe sie verwendet. Wie user889030 hervorhebt, ist das letzte Array-Element möglicherweise leer. Tatsächlich können das erste und das letzte Array-Element leer sein. Der folgende Code behebt beide Probleme.

# Split an input string into an array of substrings using any set
# whitespace characters
function explode_whitespace($str) {  
  # Split the input string into an array
  $parts = preg_split('/\s+/', $str);
  # Get the size of the array of substrings
  $sizeParts = sizeof($parts);
  # Check if the last element of the array is a zero-length string
  if ($sizeParts > 0) {
    $lastPart = $parts[$sizeParts-1];
    if ($lastPart == '') {
      array_pop($parts);
      $sizeParts--;
    }
    # Check if the first element of the array is a zero-length string
    if ($sizeParts > 0) {
      $firstPart = $parts[0];
      if ($firstPart == '') 
        array_shift($parts); 
    }
  }
  return $parts;   
}

-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);
    ?>


-5

@OP es spielt keine Rolle, Sie können einfach auf ein Feld mit Explosion teilen. Bis Sie diese Werte verwenden möchten, durchlaufen Sie die explodierten Werte und verwerfen Sie Leerzeichen.

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

4
Was ist mit tabulatorgetrennten Werten?
Dotancohen

Durch Tabulatoren getrennte Werte werden nicht explodiert.
NekojiruSou
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.