Dizeyi bir veya daha fazla boşluk veya sekme ile patlatma


141

Bir dizeyi bir veya daha fazla boşluk veya sekme ile nasıl patlatabilirim?

Misal:

A      B      C      D

Bunu bir dizi yapmak istiyorum.


sıfır veya daha fazla boşluk, her öğenin en fazla bir karaktere sahip olacağını veya sonsuz sayıda boş öğeye sahip olacağınızı gösterir. Bunun istediğinden emin misin?
bdonlan

Evet, muhtemelen "bir veya daha fazla boşluk" olmalıdır.
Michael Myers

Yanıtlar:



49

Sekmelere göre ayırmak için:

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

Boşluklara / sekmelere / yeni satırlara ayırmak için:

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

Yalnızca boşluklara göre ayırmak için:

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


23

Bu çalışıyor:

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

19

Yazar patladı istedi, patlayabilir kullanabilirsiniz böyle patlayabilir

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

Not: tek değil, çift tırnak kullanmalısınız.


Benim için çalıştı ve normal ifadelerin karanlık gücünü kullanmaktan biraz daha basit.
David 'kel zencefil'

8
Ancak "boşluklar veya sekmeler" istedi ve bu yalnızca sekmeler için patladı.
Jeff

2
Buraya ben de patlayan alanlar aramaya geldim. Bu konuda derinlerde üzülüyorum.
Sergio A.




0

Diğer milletlerin (Ben James) verdiği cevaplar oldukça iyi ve ben onları kullandım. User889030'un işaret ettiği gibi, son dizi öğesi boş olabilir. Aslında, ilk ve son dizi elemanları boş olabilir. Aşağıdaki kod her iki sorunu da ele almaktadır.

# 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 önemli değil, patlayarak bir alana bölebilirsiniz. Bu değerleri kullanmak istediğinize kadar, patlatılmış değerler üzerinde tekrarlayın ve boşlukları atın.

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

4
Sekmeyle ayrılmış değerler ne olacak?
dotancohen

Sekmeyle ayrılmış değerler patlamaz, bu yüzden ugh.
NekojiruSou
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.