1つ以上のスペースまたはタブで文字列を分解するにはどうすればよいですか?
例:
A B C D
これを配列にしたい。
$parts = preg_split('/\s+/', $str);
タブで区切るには:
$comp = preg_split("/[\t]/", $var);
スペース/タブ/改行で区切るには:
$comp = preg_split('/\s+/', $var);
スペースのみで区切るには:
$comp = preg_split('/ +/', $var);
これは動作します:
$string = 'A B C D';
$arr = preg_split('/[\s]+/', $string);
著者は爆発を要求しました、あなたはこのように爆発を使用することができます
$resultArray = explode("\t", $inputString);
注:単一引用符ではなく二重引用符を使用する必要があります。
あなたが欲しいと思う preg_split
:
$input = "A B C D";
$words = preg_split('/\s+/', $input);
var_dump($words);
explodeを使用する代わりに、preg_splitを試してください。 http://www.php.net/manual/en/function.preg-split.php
全幅スペースを考慮するために
full width
これに対するBensの回答を拡張できます。
$searchValues = preg_split("@[\s+ ]@u", $searchString);
ソース:
(コメントを投稿するのに十分な評判がないので、これを回答として書いています。)
他の人々(ベンジェームス)によって提供された答えは非常によく、私はそれらを使用しました。 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;
}