将字符串分解为没有空元素的数组?

2022-08-30 11:59:16

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"
}

答案 1

试试preg_split

$exploded = preg_split('@/@', '1/2//3/', NULL, PREG_SPLIT_NO_EMPTY);


答案 2

array_filter将删除空白字段,下面是一个没有过滤器的示例:

print_r(explode('/', '1/2//3/'))

指纹:

Array
(
    [0] => 1
    [1] => 2
    [2] =>
    [3] => 3
    [4] =>
)

使用过滤器:

php> print_r(array_filter(explode('/', '1/2//3/')))

指纹:

Array
(
    [0] => 1
    [1] => 2
    [3] => 3
)

您将过滤掉所有解析为“false”的值。

查看 http://uk.php.net/manual/en/function.array-filter.php