Взрываться, что не возвращает пустые строки? - PullRequest
30 голосов
/ 15 сентября 2008

PHP функция разнесения возвращает массив строк, разделенных на некоторую предоставленную подстроку. Он вернет пустые строки, например:

var_dump(explode('/', '1/2//3/'));
array(5) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(0) ""
  [3]=>
  string(1) "3"
  [4]=>
  string(0) ""
}

Есть ли какая-то другая функция или опция или что-нибудь, что могло бы вернуть все , кроме пустых строк?

var_dump(different_explode('/', '1/2//3/'));
array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}

Ответы [ 13 ]

0 голосов
/ 15 сентября 2008

PHP * функция разделения аналогична функции разнесения, за исключением того, что она позволяет вводить шаблон регулярного выражения в качестве разделителя. Что-то с эффектом:

$exploded_arr = split('/\/+/', '1/2//3/');
0 голосов
/ 15 сентября 2008

Обычно я обертываю это в вызове array_filter , например,

var_dump(array_filter(explode('/', '1/2//3/'))
=>
array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [3]=>
  string(1) "3"
}

Знайте, конечно, что ключи массива поддерживаются; если вы не хотите этого поведения, не забудьте добавить вызов внешней оболочки для array_values ​​().

0 голосов
/ 15 сентября 2008

Напишите функцию-обертку, чтобы удалить их

function MyExplode($sep, $str)
{
    $arr = explode($sep, $str);
    foreach($arr as $item)
        if(item != "")
            $out[] = $item;
    return $out;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...