目的
- URLの文字列から構成要素を返す
parse_url()
関数の使い方をメモ的にまとめる
謝辞
- 本知見は筆者が記載した記事PHP ファイルパスやURLからファイル名や拡張子等を取得するにコメントを下さった @s9er7 様のご知見です。
- この場を借りて改めて感謝致します!コメントを下さり本当にありがとうございます!
情報
- 筆者は下記サービスを用いて今回の記事内容の動作確認を行った。
方法
-
PHPのURL関数の一種である
parse_url()
を用いる。 -
下記の様に記載することでURLの構成要素の情報を配列で返してくれる。
parse_url(URL);
-
例えばhttps://qiita.com/miriwoというURLの文字列を渡すと下記の様に「scheme」「host」「path」を配列で返してくれる。
$path = 'https://qiita.com/miriwo'; var_dump(parse_url($path)); //array(3) { // ["scheme"]=> // string(5) "https" // ["host"]=> // string(9) "qiita.com" // ["path"]=> // string(7) "/miriwo" //}
-
当該の関数の第二引数にコンポーネントを渡すことで任意の値のみ返すこともできる。コンポーネントを指定しないと存在する情報のみを配列で返す。
parse_url(URL, コンポーネント);
-
例えばhttps://qiita.com/miriwoのhost部分だけを返してほしい場合は下記の様に指定する。
$path = 'https://qiita.com/miriwo'; var_dump(parse_url($path, PHP_URL_HOST)); // string(9) "qiita.com"と出力される
-
渡したURLの文字列にコンポーネントで指定した情報がなかった場合、nullを変えす。
$path = 'https://qiita.com/miriwo'; var_dump(parse_url($path, PHP_URL_PORT)); // NULLが返される
-
ポート情報やクエリパラメータの情報も含むURL文字列を当該の関数にわたすと返してくれる。渡すと返してくれる値は下記である。
- scheme - 例: http
- host
- port
- user
- pass
- path
- query - クエスチョンマーク ? 以降
- fragment - ハッシュマーク # 以降