phpで「parse_url」関数の使い方を理解するのにちょっと時間がかかりましたんで、「たぶん、また今後も使う場面が来たら時間かかっちゃうんだろうなぁ~」なんて思いまして、メモリました。
自分のブログに書いておけば「わかんないなぁ」と思ったら、検索して見つけられますしね。
「parse_url」関数とは何か
いつも参考にさせていただくのは、こちらです。
引用させていただきますと、
この関数は、URL の様々な構成要素のうち特定できるものに関して 連想配列にして返します。
とのことです。
文字だけでは理解するのが時間かかりますし、自分の身に付きにくいです。こういうのは、具体的にやってみましょう~。
サンプルURLを使ってやってみます
今回は、サンプルURLとして
「http://username:password@hostname:80/path?arg=value#anchor」
これを使ってやってみましょう。
サンプルURLを変数「$url」に格納します
$url = 'http://username:password@hostname:80/path?arg=value#anchor';
ここで「parse_url」関数を使います
変数「$url_array」に「parse_url($url)」で連想配列にした値を格納します。
$url_array = parse_url($url);
基本はこれでOKです。
それでは具体的に、どんな値が格納されているのか確認しましょう。
格納されてる値を1つずつ見ます
スキーム「scheme」
$url = 'http://username:password@hostname:80/path?arg=value#anchor'; $url_array = parse_url($url); echo $url_array['scheme']; 結果:http
ホスト「host」
$url = 'http://username:password@hostname:80/path?arg=value#anchor'; $url_array = parse_url($url); echo $url_array['host']; 結果:hostname
ポート「port」
$url = 'http://username:password@hostname:80/path?arg=value#anchor'; $url_array = parse_url($url); echo $url_array['port']; 結果:80
ユーザ「user」
$url = 'http://username:password@hostname:80/path?arg=value#anchor'; $url_array = parse_url($url); echo $url_array['user']; 結果:username
パスワード「pass」
$url = 'http://username:password@hostname:80/path?arg=value#anchor'; $url_array = parse_url($url); echo $url_array['password']; 結果:password
パス「path」
$url = 'http://username:password@hostname:80/path?arg=value#anchor'; $url_array = parse_url($url); echo $url_array['path']; 結果:/path
クエリ「query」
$url = 'http://username:password@hostname:80/path?arg=value#anchor'; $url_array = parse_url($url); echo $url_array['query']; 結果:arg=value
フラグメント「fragment」
$url = 'http://username:password@hostname:80/path?arg=value#anchor'; $url_array = parse_url($url); echo $url_array['fragment']; 結果:anchor
以上でしょうかね。「print_r($url_array);」で、格納された値を確認することもできます。
print_r($url_array); 結果: Array ( [scheme] => http [host] => hostname [port] => 80 [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor )
まとめ
あるapiを解析している時に、この「parse_url」関数を使ったコードが出てきたので、勉強がてら調べました。
こうやって1つずつ見ていくと、どんな値が格納されているのか割と把握しやすくなった気がします。
もっと詳しく理解されたい方は、「PHP: parse_url – Manual」でご確認いただくと、理解が深まると思います。
このページを共有する