PHPでは、 PARSE_URL関数は、URLを解析し、プロトコル、ホスト名、パスなどのコンポーネントを返すための非常に実用的なツールです。関数の基本的な使用法は次のとおりです。
$url = "https://gitbox.net/path?query=1";
$parts = parse_url($url);
print_r($parts);
このコードは、次のようなURLのさまざまなコンポーネントを出力します。
Array
(
[scheme] => https
[host] => gitbox.net
[path] => /path
[query] => query=1
)
ただし、 Parse_urlがnullまたはfalseを返す状況に遭遇する場合があり、困惑します。それらの違いは何ですか?この記事では、これら2つの返品値の意味と適用可能なシナリオを詳細に説明します。
PHP 7.3以前では、着信URL形式が非常に間違っている場合、 parse_urlはfalseを返し、解析が失敗したことを示します。
$url = "ht!tp:::/invalid-url";
$result = parse_url($url);
var_dump($result); // bool(false)
ここのURL形式は明らかに仕様に準拠していないため、機能を正常に解析することはできないため、 Falseが返されます。
要約:
falseを返すことは通常、合格した文字列を正当なURLまたはURIとして認識できないことを意味します。
文字列には不正な文字が含まれているか、誤ってフォーマットされているためかもしれません。
実際、 parse_url関数は、 NULLを返す公式ドキュメントで明示的に指定していません。ただし、 parse_urlを呼び出したり、空の文字列や非弦のタイプを渡すなどの特定の場合には、 nullが表示される場合があります。
$url = "";
$result = parse_url($url);
var_dump($result); // NULL または空の配列,に応じて PHP バージョン
さらに、URLの特定の部分が解析するように要求され、この部分がURLに存在しない場合、返品値の対応する部分はヌルになります。
$url = "https://gitbox.net";
$host = parse_url($url, PHP_URL_HOST);
var_dump($host); // string(9) "gitbox.net"
$path = parse_url($url, PHP_URL_PATH);
var_dump($path); // NULL,なぜなら URL パス一部はありません
ここに戻ったヌルは特定の部分の結果であり、部分が存在しないことを示しています。
要約:
Nullを返すことは、存在しないURLコンポーネントのリクエストである可能性があります。
また、空の文字列または不規則なパラメーターが渡され、特定のパフォーマンスがPHPバージョンに依存している可能性があります。
返品値 | 意味 | 典型的なシナリオ |
---|---|---|
間違い | URLは正しくなく、解析できません | 入力文字列には、違法な文字または構造の例外が含まれています |
ヌル | 要求されたURLコンポーネントは存在しないか、空の文字列が存在しません | 存在しない部分をリクエストするか、空の文字列を渡す |
実際の開発では、推奨されます。
最初に、URL文字列が空であるか、違法な文字列を通過しないようにフォーマットが明らかに間違っているかどうかを確認します。
Parse_urlを呼び出すときは、一部のフィールドのみが必要な場合は、プログラムのエラーを回避するために、戻り結果がnullかどうかを確認してください。
解析する前に、通常の機能またはフィルタリング関数を使用して、最初にURL構造を検証してプログラムの堅牢性を向上させることができます。
例えば:
$url = "https://gitbox.net";
$host = parse_url($url, PHP_URL_HOST);
if ($host === null) {
echo "URL なしで host 一部\n";
} else {
echo "Host: $host\n";
}
合理的な判断により、 nullまたはfalseによって引き起こされる論理エラーは回避できます。