Разграничить строку пробелами

Что будет подходящим регулярным выражением для разделения строки всеми пробелами? Между двумя токенами также может быть несколько пробелов, и в конце они должны игнорировать пробелы.

Что у меня так далеко:

<?php
$tags = "unread dev     test1   ";
$tagsArr = preg_split("/ +/", $tags);
foreach ($tagsArr as $value) {
  echo $value . ";";
}

Это дает мне следующий вывод:

"unread;dev;test1;;"

Как вы можете видеть, он не игнорирует пробелы в конце, потому что правильный вывод должен быть:

"unread;dev;test1;"

4 ответа

Решение

Вы можете игнорировать пустые записи, используя флаг PREG_SPLIT_NO_EMPTY:

$tagsArr = preg_split("/ +/", $tags, -1, PREG_SPLIT_NO_EMPTY);

Демо: http://ideone.com/1hrNJ

Просто используйте функцию обрезки в первую очередь, чтобы удалить пробел в конце.

$ trimmed_tags = trim ($ tags);

Самый быстрый способ:

$tagsArr = array_filter( explode(' ', $tags) );

Похоже, что вы хотите сохранить пробел во всей строке, но удалить с конца (чтобы не допустить эту последнюю раздражающую точку с запятой. Если я правильно понял до сих пор, это звучит как идеальное использование для команды обрезки:

http://php.net/manual/en/function.trim.php

Другие вопросы по тегам