php - url 拆分产生一个空的 0 索引
php - url split up produces an empty 0 index
所以我正在创建一个 php 应用程序,目前正在检查 url。
我 运行 在 php 的内置开发服务器上,public 目录作为根目录
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
$段的内容如下:
echo $segments[0]; // empty,
echo $segments[1]; // index
echo $segments[2]; // test
为什么第一个索引总是在那里,而且是空的?
unset($segments[0]);
问题解决了,但我想知道为什么会这样。
如果您的 URL 以 /
开头,在该字符上展开将在开头创建一个空项目(第一个分隔符之前没有任何内容)。在这种情况下,由于您已经 trim 在 /
末尾使用 rtrim()
,这将是一个简单的修复:使用 trim()
代替 trim双方:
$segments = explode('/', trim($url, '/'));
所以我正在创建一个 php 应用程序,目前正在检查 url。
我 运行 在 php 的内置开发服务器上,public 目录作为根目录
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
$段的内容如下:
echo $segments[0]; // empty,
echo $segments[1]; // index
echo $segments[2]; // test
为什么第一个索引总是在那里,而且是空的?
unset($segments[0]);
问题解决了,但我想知道为什么会这样。
如果您的 URL 以 /
开头,在该字符上展开将在开头创建一个空项目(第一个分隔符之前没有任何内容)。在这种情况下,由于您已经 trim 在 /
末尾使用 rtrim()
,这将是一个简单的修复:使用 trim()
代替 trim双方:
$segments = explode('/', trim($url, '/'));