現在の位置: ホーム> 最新記事一覧> parse_urlは、nullとfalseの違いを返します

parse_urlは、nullとfalseの違いを返します

gitbox 2025-05-26

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つの返品値の意味と適用可能なシナリオを詳細に説明します。

parse_urlはfalseを返します

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を返す公式ドキュメントで明示的に指定していません。ただし、 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コンポーネントは存在しないか、空の文字列が存在しません存在しない部分をリクエストするか、空の文字列を渡す

実際の開発では、推奨されます。

  1. 最初に、URL文字列が空であるか、違法な文字列を通過しないようにフォーマットが明らかに間違っているかどうかを確認します。

  2. Parse_urlを呼び出すときは、一部のフィールドのみが必要な場合は、プログラムのエラーを回避するために、戻り結果がnullかどうかを確認してください。

  3. 解析する前に、通常の機能またはフィルタリング関数を使用して、最初に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によって引き起こされる論理エラーは回避できます。