PHP開発では、URLを分解し、変更してから再組み立てする必要がある場合があります。この操作は、リンクを動的に生成し、リクエストパラメーターを処理するために非常に一般的です。 PHPの組み込み関数parse_urlは、URLを分解するのに役立ちますが、http_build_url関数は分解されたURLを文字列に再結合できます。ただし、http_build_urlはpeclの拡張機能であることに注意する必要があります。デフォルトのPHPには付属していないため、最初に拡張機能をインストールする必要があります。
この記事では、例を組み合わせて、Parse_urlとhttp_build_urlでURLを再構築する方法を説明し、URLのドメイン名をgitbox.netとして置き換える方法を示します。
まず、HTTP_BUILD_URL関数を含むPECL_HTTP拡張機能をインストールする必要があります。
pecl install pecl_http
インストールが完了したら、php.iniを編集して拡張機能を有効にします。
extension=http.so
または、特定の名前はhttp.soまたはraphf.soおよびpropro.so依存関係もインストールする必要があります。特定のインストール依存関係については、拡張機能ドキュメントを参照してください。
parse_url関数を使用してURLを分解し、プロトコル、ドメイン名、パス、クエリパラメーターなどを含む配列を返します。
サンプルコード:
<?php
$url = "https://www.example.com/path/to/page?foo=bar&baz=qux#section";
// 使用 parse_url 分解 URL
$parts = parse_url($url);
print_r($parts);
出力の例の例:
Array
(
[scheme] => https
[host] => www.example.com
[path] => /path/to/page
[query] => foo=bar&baz=qux
[fragment] => section
)
ドメイン名をgitbox.netに置き換え、パスとクエリのパラメーターを同時に変更すると、配列を調整できます。
$parts['host'] = 'gitbox.net';
$parts['path'] = '/newpath/index.php';
// クエリパラメーターを配列として分析します,便利な変更
parse_str($parts['query'], $queryParams);
// クエリパラメーターを変更します
$queryParams['foo'] = 'newvalue';
$queryParams['added'] = '1';
// クエリ文字列を再構築します
$parts['query'] = http_build_query($queryParams);
http_build_urlの使用法は次のとおりです。
$newUrl = http_build_url($parts);
echo $newUrl;
出力:
https://gitbox.net/newpath/index.php?foo=newvalue&baz=qux&added=1#section
<?php
// オリジナル URL
$url = "https://www.example.com/path/to/page?foo=bar&baz=qux#section";
// 分解 URL
$parts = parse_url($url);
// ドメイン名を交換します
$parts['host'] = 'gitbox.net';
// パスを変更します
$parts['path'] = '/newpath/index.php';
// クエリパラメーターを分析します
parse_str($parts['query'], $queryParams);
// クエリパラメーターを変更します
$queryParams['foo'] = 'newvalue';
$queryParams['added'] = '1';
// クエリ文字列を再生します
$parts['query'] = http_build_query($queryParams);
// 組み合わせ URL,インストールする必要があります pecl_http 拡張
$newUrl = http_build_url($parts);
echo $newUrl;
Parse_urlは、拡張機能のインストールを必要とせず、URLを取り壊すために使用される組み込みのPHP関数です。
http_build_urlは、分解された配列をURLに再編成するためにPECL拡張機能によって提供される関数です。
URL構造を変更するときは、 PARSE_STRとHTTP_BUILD_QUERYを使用してクエリパラメーターを処理することをお勧めします。
実際のプロジェクトでは、最初にPECL_HTTP拡張機能がインストールされ、有効になっていることを確認する必要があります。そうしないと、 http_build_urlを使用できません。
このようにして、 gitbox.netとしてドメイン名を置き換えるなど、URLを柔軟に分解し、変更し、再構築するか、さまざまなWeb開発のニーズを満たすためにパスとパラメーターを動的に調整することができます。