2016-09-19 2 views
1

私はPHPアプリケーションを作成していますが、現在URLをチェックしています。php-url split upは空の0のインデックスを生成します

私はURLを爆発するとき、私はこの

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

ようですが、あればそれを行うルートなどの公共ディレクトリ

php -S localhost:8080 -t public/ 

で、PHPから開発サーバーでビルド上で実行しています例えば、URLを入力してください:

localhost:8080/index/test 

$セグメントの内容は次のとおりです:

echo $segments[0]; // empty, 
echo $segments[1]; // index 
echo $segments[2]; // test 

なぜ、最初のインデックスは常に存在し、空ですか?

unset($segments[0]); 

は問題を解決しますが、なぜそれがなぜ発生するのかを知りたいと思います。

+0

は 'のvar_dump($セグメント)を試してみてください;'。 –

+1

'/'で始まるかもしれませんか?その場合、それを修正したrtrim – sidyll

+0

の代わりにtrimを使用してください! o: – user3149569

答えて

1

URLが/で始まる場合、その文字を爆発させると、先頭に空のアイテムが作成されます(最初のセパレータの前には何もありません)。両側をトリミングする代わりにtrim()を使用します:この場合、あなたはすでにrtrim()と終わりに/をトリミングしているので、簡単な修正になります

$segments = explode('/', trim($url, '/')); 
関連する問題