(PHP 4, PHP 5, PHP 7)
parse_url — URL を解釈し、その構成要素を返す
この関数は、URL の様々な構成要素のうち特定できるものに関して 連想配列にして返します。
この関数は、指定された URL が有効かどうかを調べるためのもの ではなく、単に URL を上で示した 要素に分解するだけのものです。不完全な URL であっても受け入れられますし、 そのような場合でも parse_url() は可能な限り 正しく解析しようとします。
urlパースする URL。無効な文字は _ に置換されます。
component
PHP_URL_SCHEME、
PHP_URL_HOST、PHP_URL_PORT、
PHP_URL_USER、PHP_URL_PASS、
PHP_URL_PATH、PHP_URL_QUERY
あるいは PHP_URL_FRAGMENT のうちのいずれかを指定し、
特定の URL コンポーネントのみを文字列
(PHP_URL_PORT を指定した場合だけは整数値)
で取得するようにします。
完全におかしな形式の URL については、parse_url() は
FALSE を返します。
component を省略した場合は、連想配列を返します。
連想配列の中には少なくともひとつの要素が含まれます。
この配列に含まれる可能性のある要素は次のとおりです。
component が指定されている場合、
parse_url() は配列ではなく文字列
(PHP_URL_PORT の場合は整数値) を返します。
要求したコンポーネントが指定した URL の中にない場合は
NULL を返します。
| バージョン | 説明 |
|---|---|
| 5.4.7 | host の認識方法を修正し、 scheme を省略してコンポーネント区切りから始まる場合にも対応するようになりました。 |
| 5.3.3 |
URL のパースに失敗したときに
E_WARNING を発生させないようになりました。
|
| 5.1.2 | パラメータ component が追加されました。 |
例1 parse_url() の例
<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
var_dump(parse_url($url, PHP_URL_SCHEME));
var_dump(parse_url($url, PHP_URL_USER));
var_dump(parse_url($url, PHP_URL_PASS));
var_dump(parse_url($url, PHP_URL_HOST));
var_dump(parse_url($url, PHP_URL_PORT));
var_dump(parse_url($url, PHP_URL_PATH));
var_dump(parse_url($url, PHP_URL_QUERY));
var_dump(parse_url($url, PHP_URL_FRAGMENT));
?>
上の例の出力は以下となります。
array(8) {
["scheme"]=>
string(4) "http"
["host"]=>
string(8) "hostname"
["port"]=>
int(9090)
["user"]=>
string(8) "username"
["pass"]=>
string(8) "password"
["path"]=>
string(5) "/path"
["query"]=>
string(9) "arg=value"
["fragment"]=>
string(6) "anchor"
}
string(4) "http"
string(8) "username"
string(8) "password"
string(8) "hostname"
int(9090)
string(5) "/path"
string(9) "arg=value"
string(6) "anchor"
例2 parse_url() でスキームを省略した例
<?php
$url = '//www.example.com/path?googleguy=googley';
// 5.4.7 より前のバージョンでは、パスを "//www.example.com/path" のように表示していました
var_dump(parse_url($url));
?>
上の例の出力は以下となります。
array(3) {
["host"]=>
string(15) "www.example.com"
["path"]=>
string(5) "/path"
["query"]=>
string(17) "googleguy=googley"
}
注意:
この関数は相対 URL では動作しません。
注意:
parse_url() は URL をパースするための関数であり、 URI をパースするものではありません。しかし、PHP の後方互換性を満たすため、 例外として file:// スキームについては 3 重スラッシュ(file:///...) が認められています。他のスキームにおいては、これは無効な形式となります。