URLの組み立てサンプル(http_build_url())

http_build_url()の各結果

サンプル

echo http_build_url($url, $parts);

schemeの指定

var_dump($parts)$urlの値echo http_build_url($url, $parts);
Array
(
    [scheme] => ftp
)
https://recatnap.info/→ ftp://recatnap.info/
https://recatnap.info→ ftp://recatnap.info
//recatnap.info→ ftp://recatnap.info
//recatnap.info/→ ftp://recatnap.info/
/→ ftp://tips.recatnap.info/
/hoge→ ftp://tips.recatnap.info/hoge
hoge→ ftp://tips.recatnap.info/hoge

schemeとドメインの指定

var_dump($parts)$urlの値echo http_build_url($url, $parts);
Array
(
    [scheme] => http
    [host] => example.com
)
https://recatnap.info/→ http://example.com/
https://recatnap.info→ http://example.com
//recatnap.info→ http://example.com
//recatnap.info/→ http://example.com/
/→ http://example.com/
/hoge→ http://example.com/hoge
hoge→ http://example.com/hoge

パスの指定(相対)

var_dump($parts)$urlの値echo http_build_url($url, $parts);
Array
(
    [path] => zebra
)
https://recatnap.info/→ https://recatnap.infozebra
https://recatnap.info→ https://recatnap.infozebra
//recatnap.info→ http://recatnap.infozebra
//recatnap.info/→ http://recatnap.infozebra
/→ http://tips.recatnap.infozebra
/hoge→ http://tips.recatnap.infozebra
hoge→ http://tips.recatnap.infozebra

パスの指定(絶対)

var_dump($parts)$urlの値echo http_build_url($url, $parts);
Array
(
    [path] => /zebra
)
https://recatnap.info/→ https://recatnap.info/zebra
https://recatnap.info→ https://recatnap.info/zebra
//recatnap.info→ http://recatnap.info/zebra
//recatnap.info/→ http://recatnap.info/zebra
/→ http://tips.recatnap.info/zebra
/hoge→ http://tips.recatnap.info/zebra
hoge→ http://tips.recatnap.info/zebra

絶対パスとgetパラメータの指定

var_dump($parts)$urlの値echo http_build_url($url, $parts);
Array
(
    [path] => /yakitori
    [query] => kushi=zebra
)
https://recatnap.info/→ https://recatnap.info/yakitori?kushi=zebra
https://recatnap.info→ https://recatnap.info/yakitori?kushi=zebra
//recatnap.info→ http://recatnap.info/yakitori?kushi=zebra
//recatnap.info/→ http://recatnap.info/yakitori?kushi=zebra
/→ http://tips.recatnap.info/yakitori?kushi=zebra
/hoge→ http://tips.recatnap.info/yakitori?kushi=zebra
hoge→ http://tips.recatnap.info/yakitori?kushi=zebra

basic認証のIDとパスワードの指定

var_dump($parts)$urlの値echo http_build_url($url, $parts);
Array
(
    [user] => hoge
    [pass] => foo
)
https://recatnap.info/→ https://hoge:foo@recatnap.info/
https://recatnap.info→ https://hoge:foo@recatnap.info
//recatnap.info→ http://hoge:foo@recatnap.info
//recatnap.info/→ http://hoge:foo@recatnap.info/
/→ http://hoge:foo@tips.recatnap.info/
/hoge→ http://hoge:foo@tips.recatnap.info/hoge
hoge→ http://hoge:foo@tips.recatnap.info/hoge

flags

▼色々と設定ができるそうだ。
echo http_build_url($url, $parts, HTTP_URL_STRIP_AUTH | HTTP_URL_JOIN_PATH | HTTP_URL_JOIN_QUERY | HTTP_URL_STRIP_FRAGMENT);
▼内容
HTTP_URL_REPLACE最初の URL のすべての部分を、二番目の URL がある場合にそれで置き換えます。
HTTP_URL_JOIN_PATH相対パスを連結します。
HTTP_URL_JOIN_QUERYクエリ文字列を連結します。
HTTP_URL_STRIP_USER認証ユーザに関する情報を取り除きます。
HTTP_URL_STRIP_PASS認証パスワードに関する情報を取り除きます。
HTTP_URL_STRIP_AUTHすべての認証情報を取り除きます。
HTTP_URL_STRIP_PORT明示的なポート番号の指定を取り除きます。
HTTP_URL_STRIP_PATH完全パスを取り除きます。
HTTP_URL_STRIP_QUERYクエリ文字列を取り除きます。
HTTP_URL_STRIP_FRAGMENTフラグメント (# 以降) を取り除きます。
HTTP_URL_STRIP_ALLスキームとホスト以外のすべての部分を取り除きます。

参考

PHP: http_build_url - Manual