ноль или более пробелов означает, что либо каждый элемент будет иметь не более одного символа, либо у вас будет бесконечно много пустых элементов. Вы уверены, что это то, что вам нужно?
bdonlan
Да, вероятно, это должно быть «одно или несколько пробелов».
Ответы других людей (Бен Джеймс) весьма хороши, и я их использовал. Как указывает user889030, последний элемент массива может быть пустым. На самом деле первый и последний элементы массива могут быть пустыми. Приведенный ниже код решает обе проблемы.
# Split an input string into an array of substrings using any set# whitespace charactersfunctionexplode_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 stringif ($sizeParts > 0) {
$lastPart = $parts[$sizeParts-1];
if ($lastPart == '') {
array_pop($parts);
$sizeParts--;
}
# Check if the first element of the array is a zero-length stringif ($sizeParts > 0) {
$firstPart = $parts[0];
if ($firstPart == '')
array_shift($parts);
}
}
return $parts;
}
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);
?>
@OP это не имеет значения, вы можете просто разделить пространство с помощью explode. Пока вы не захотите использовать эти значения, перебирайте разнесенные значения и отбрасывайте пробелы.
$str = "A B C D";
$s = explode(" ",$str);
foreach ($s as $a=>$b){
if ( trim($b) ) {
print"using $b\n";
}
}
Ответы:
$parts = preg_split('/\s+/', $str);
источник
$parts = preg_split('/\s+/', $str, -1, PREG_SPLIT_NO_EMPTY);
Чтобы разделить вкладками:
$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);
источник
вместо использования разнесения попробуйте preg_split: http://www.php.net/manual/en/function.preg-split.php
источник
Чтобы учесть пространство полной ширины, например
вы можете расширить ответ Бенса на это:
$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; }
источник
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); ?>
источник
@OP это не имеет значения, вы можете просто разделить пространство с помощью explode. Пока вы не захотите использовать эти значения, перебирайте разнесенные значения и отбрасывайте пробелы.
$str = "A B C D"; $s = explode(" ",$str); foreach ($s as $a=>$b){ if ( trim($b) ) { print "using $b\n"; } }
источник