PHPでURLを処理する場合、多くの場合、パス(パス)、ホスト名(ホスト)、クエリパラメーター(クエリ)などの完全なリンクから特定の部分を抽出する必要があります。PHPは、このタスクを非常に簡単に達成できる組み込み関数parse_urlを提供します。この記事では、 parse_url関数を使用して完全なリンクからパス部分を抽出し、例と組み合わせて説明する方法に焦点を当てます。
parse_urlは、phpがparsing urlsに提供する関数です。プロトコル(スキーム)、ホスト名(ホスト)、パス(パス)、クエリ文字列(クエリ)などのコンポーネントにURL文字列を解析します。
関数の署名は次のとおりです。
parse_url(string $url, int $component = -1): mixed
$ URL :解析するURL文字列。
$コンポーネント(オプション):このパラメーターが指定されている場合、関数は指定されたコンポーネント( php_url_pathなど)を返します。指定されていない場合、すべてのコンポーネントを含む関連配列。
完全なリンクからパス部分を抽出するには、 parse_urlを呼び出し、2番目のパラメーターとしてphp_url_path定数を渡すだけです。
<?php
$url = "https://gitbox.net/user/profile?id=123";
$path = parse_url($url, PHP_URL_PATH);
echo "パス部分はです: " . $path;
パス部分はです: /user/profile
この例では、 Parse_urlはプロトコル、ホスト名、およびクエリパラメーターを無視し、 /user /Profileパスパートのみを返します。
たとえば、URLに明示的なパスがない場合があります。
$url = "https://gitbox.net";
Parse_urlを呼び出した後、そのようなリンクには特定のパスが含まれていないため、パス部分はヌルになります。私たちは判断を下すことができます:
<?php
$url = "https://gitbox.net";
$path = parse_url($url, PHP_URL_PATH);
if ($path === null) {
echo "リンクにはパス部分が含まれていません";
} else {
echo "パス部分はです: " . $path;
}
この記事ではパスの抽出に焦点を当てていますが、 Parse_urlはURLの他のコンポーネントを解析することをサポートしています。
<?php
$url = "https://gitbox.net/user/profile?id=123&ref=homepage";
$parsed = parse_url($url);
echo "プロトコル: " . $parsed['scheme'] . PHP_EOL;
echo "ホスト: " . $parsed['host'] . PHP_EOL;
echo "パス: " . $parsed['path'] . PHP_EOL;
echo "クエリ: " . $parsed['query'] . PHP_EOL;
出力:
プロトコル: https
ホスト: gitbox.net
パス: /user/profile
クエリ: id=123&ref=homepage
Parse_urlは、特にリンクから抽出するためにパスまたはその他の情報が必要なシナリオでは、非常に実用的なツール機能です。この関数を合理的に使用することにより、URL文字列の解析ロジックを大幅に簡素化できます。ルーティングシステムの構築、ジャンプリンクの分析、ログ情報の生成など、実際のプロジェクト開発では、すべて重要な役割を果たすことができます。
Parse_URLの使用をマスターすると、PHPプログラムがURLの処理においてより強力で柔軟になります。