Разнесите строку на один или несколько пробелов или табуляций


Как я могу разбить строку на один или несколько пробелов или табуляций?

Пример:

A      B      C      D

Я хочу сделать это массивом.

Author: James McNellis, 2009-11-25

10 answers

$parts = preg_split('/\s+/', $str);
 274
Author: Ben James, 2009-11-24 21:17:21

Для разделения по вкладкам:

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

Для разделения пробелами/табуляциями/новыми строками:

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

Для разделения только пробелами:

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

 44
Author: AliAvci, 2014-11-27 21:03:35

Это работает:

$string = 'A   B C          D';
$arr = preg_split('/[\s]+/', $string);
 19
Author: schneck, 2009-11-24 21:17:59

Автор попросил взорвать, чтобы вы могли использовать взрыв вот так

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

Примечание: вы должны использовать двойные кавычки, а не одинарные.

 13
Author: lucsan, 2016-07-20 12:28:16

Я думаю, ты хочешь preg_split:

$input = "A  B C   D";
$words = preg_split('/\s+/', $input);
var_dump($words);
 8
Author: jheddings, 2009-11-24 21:19:04

Вместо того, чтобы использовать explode, попробуйте preg_split: http://www.php.net/manual/en/function.preg-split.php

 5
Author: Brian Schroth, 2009-11-24 21:17:42

Для учета пространства полной ширины , такого как

full width

Вы можете расширить ответ Bens на это:

$searchValues = preg_split("@[\s+ ]@u", $searchString);

Источники:

(У меня недостаточно репутации, чтобы оставить комментарий, поэтому я написал это в качестве ответа.)

 1
Author: MPS, 2017-05-23 11:55:01

Ответы, предоставленные другими людьми (Бен Джеймс), довольно хороши, и я их использовал. Как указывает пользователь889030, последний элемент массива может быть пустым. На самом деле, первый и последний элементы массива могут быть пустыми. Приведенный ниже код решает обе проблемы.

# 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;   
}
 0
Author: Peter Schaeffer, 2018-04-28 14:57:56
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);
    ?>

 -2
Author: Trimbak Gopalghare, 2017-11-25 10:26:27

@OP это не имеет значения, вы можете просто разделить пространство с помощью explode. Пока вы не захотите использовать эти значения, повторяйте разнесенные значения и отбрасывайте пробелы.

$str = "A      B      C      D";
$s = explode(" ",$str);
foreach ($s as $a=>$b){    
    if ( trim($b) ) {
     print "using $b\n";
    }
}
 -5
Author: ghostdog74, 2009-11-25 00:14:23