我希望像这样分割一个网址:$url = "log/getLog/0/categorias/5/";
使用此功能:
$urlParts = array_filter(explode('/', $url));
但这回归:
array(4){[0] => string(11)“log”[1] => string(8)“getLog”[3] => string(10)“categorias”[4] => string(1)“5”}
如何查看已跳过的0
值。我可以做些什么来避免这个错误?
答案 0 :(得分:2)
array_filter
将删除包含null
,empty
和0
值的所有元素。
要在您的情况下处理值0
,可以使用回调函数,您可以在其中明确指定允许哪些值以及忽略哪些值。
我创建了一个自定义回调函数,该函数将接受0
但过滤null
,empty
和false
值。
<?php
$url = "log/getLog/0/categorias/5/";
$urlParts = array_filter(explode('/', $url), function($v){
return $v !== false && !is_null($v) && ($v != '' || $v == '0');
});
print_r($urlParts);
$url = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
5 => 0
);
$urlParts = array_filter($url, function($v){
return $v !== false && !is_null($v) && ($v != '' || $v == '0');
});
print_r($urlParts);
?>
输出
Array
(
[0] => log
[1] => getLog
[2] => 0
[3] => categorias
[4] => 5
)
Array
(
[0] => foo
[2] => -1
[5] => 0
)
工作Demo