Url拆分产生一个空的0索引


url split up produces an empty 0 index

所以我正在创建一个php应用程序,目前正在检查url。

我运行在构建开发服务器从php,与公共目录作为根

php -S localhost:8080 -t public/

当我打开url时,我这样做

$url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', rtrim($url, '/'));

但是如果在url中输入:

localhost:8080/index/test
$segments的内容如下:
echo $segments[0]; // empty,
echo $segments[1]; // index
echo $segments[2]; // test

为什么第一个索引总是空的?

unset($segments[0]);

解决了问题,但我想知道为什么会发生。

如果您的URL以/开头,在该字符上展开将在开始处创建一个空项(在第一个分隔符之前没有任何内容)。在这种情况下,由于您已经在最后用rtrim()修剪/,这将是一个简单的修复:使用trim()代替修剪两侧:

$segments = explode('/', trim($url, '/'));