用一个或多个空格或制表符爆炸字符串


141

如何将一个或多个空格或制表符爆炸成字符串?

例:

A      B      C      D

我想使它成为一个数组。


零个或多个空格表示每个元素最多具有一个字符,或者您将无限多个空元素。您确定这是您想要的吗?
bdonlan

是的,可能应该是“一个或多个空格”。
迈克尔·迈尔斯

Answers:



49

按标签分开:

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

要用空格/制表符/换行符分隔:

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

单独按空格分开:

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


23

这有效:

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

19

作者要求爆炸,可以像这样使用爆炸

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

注意:必须使用双引号,而不是单引号。


为我工作,比使用正则表达式的强大功能更简单。
大卫“秃头姜”

8
但是他要求输入“空格或制表符”,而这只会爆炸制表符。
杰夫

2
我也是来这里寻找爆炸空间的。我对此深感难过。
塞尔吉奥·A。




0

其他人(本·詹姆斯)(Ben James)提供的答案非常好,我已经使用了它们。正如user889030指出的那样,最后一个数组元素可能为空。实际上,第一个和最后一个数组元素可以为空。下面的代码解决了这两个问题。

# 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没关系,您可以通过爆炸在一个空间上拆分。在要使用这些值之前,请遍历爆炸值并丢弃空白。

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

4
制表符分隔的值如何?
dotancohen 2012年

制表符分隔的值不会爆炸,所以嗯。
NekojiruSou 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.