Разнесение строки на один или несколько пробелов или вкладок
Как я могу разнести строку на один или несколько пробелов или вкладок?
пример:
A B C D
Я хочу сделать это массив.
10 ответов:
для разделения по вкладкам:
$comp = preg_split("/[\t]/", $var);
для разделения пробелами / вкладками / новыми строками:
$comp = preg_split('/\s+/', $var);
для разделения только пробелами:
$comp = preg_split('/ +/', $var);
автор попросил взорвать, чтобы вы могли использовать взорвать вот так
$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; }
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"; } }