web-dev-qa-db-ja.com

1つ以上のスペースまたはタブで文字列を分解します

1つ以上のスペースまたはタブで文字列を分解するにはどうすればよいですか?

例:

A      B      C      D

これを配列にしたい。

131
DarthVader
$parts = preg_split('/\s+/', $str);
295
Ben James

タブで区切るには:

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

スペース/タブ/改行で区切るには:

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

スペースのみで区切るには:

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

47
AliAvci

これは動作します:

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

著者は爆発を要求しました、あなたはこのように爆発を使用することができます

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

注:単一引用符ではなく二重引用符を使用する必要があります。

17
lucsan

あなたが欲しいと思う preg_split

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

explodeを使用する代わりに、preg_splitを試してください。 http://www.php.net/manual/en/function.preg-split.php

6
Brian Schroth

全幅スペースを考慮するために

full width

これに対するBensの回答を拡張できます。

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

ソース:

(コメントを投稿するのに十分な評判がないので、これを回答として書いています。)

2
MPS

他の人々(ベンジェームス)によって提供された答えは非常によく、私はそれらを使用しました。 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;   
}
0
Peter Schaeffer