PHP 正規表現を使用して URL の正当性を検証する方法

PHPz
リリース: 2023-06-24 10:00:01
オリジナル
1605 人が閲覧しました

現在の Web 開発では、URL はすでに非常に重要な概念になっています。Web サイトや Web アプリケーションでは、URL を使用してリソースの場所を特定することができ、多くの場合、処理のために不正な URL を検出する必要があります。この記事では、PHP 正規表現を使用して URL の正当性を検証する方法を紹介します。

まず、URL とは何かを理解する必要があります。 URL は、Uniform Resource Locator (Uniform Resource Locator) の略称で、インターネット上のリソースを一意に識別して記述するために使用されます。 URL には、プロトコル、ホスト名、パスなどの複数のコンポーネントが含まれています。完全な URL の形式は通常次のとおりです。

protocol://hostname[:port]/path[?query][#fragment]
ログイン後にコピー

このうち、プロトコル、ホスト名、パスは必須部分であり、その他の部分はオプションです。次に、PHP 正規表現を使用して URL の正当性をチェックする方法を紹介します。

最初のステップは、URL の形式に一致する正規表現を作成することです。 URL ごとに形式が大きく異なることを考慮すると、より緩やかな正規表現を設計する必要があります。参考として次の例を示します:

$pattern = '@^(https?|ftp)://[^s/$.?#].[^s]*$@i';
ログイン後にコピー

上記の正規表現の意味は、URL が次で始まる必要があるということです。プロトコル (http、https、または ftp) の後に「://」記号が続きます。次に、ホスト名を続けます。スペース、$、?、# などの特殊文字はホスト名に含めることはできません。パスには任意の文字を含めることができます。最後に、URL 全体の末尾にスペースを入れることはできないため、スペースを表すには s を使用し、任意の文字を表すには * を使用します。

次に、作成した正規表現を使用して URL の有効性をチェックするコードを記述する必要があります。以下はサンプル コードです。

function validateUrl($url) {
    $pattern = '@^(https?|ftp)://[^s/$.?#].[^s]*$@i';
    return preg_match($pattern, $url);
}
ログイン後にコピー

上記のコードでは、validateUrl 関数には、検証する必要がある URL であるパラメーター $url が必要です。 preg_match 関数は、URL が作成したばかりの正規表現と一致するかどうかを照合するために関数内で使用されます。一致が成功した場合は 1 が返され、それ以外の場合は 0 が返されます。

最後に、上記のコードを使用する場合、必要なのは URL の正当性を検出するために validateUrl 関数を呼び出すことだけです。以下はテスト例です:

$url1 = "http://www.example.com/path";
if (validateUrl($url1)) {
    echo "URL $url1 合法。
";
} else {
    echo "URL $url1 不合法。
";
}

$url2 = "http://www.example.com/path with space";
if (validateUrl($url2)) {
    echo "URL $url2 合法。
";
} else {
    echo "URL $url2 不合法。
";
}
ログイン後にコピー

上記のコードでは、2 つの URL: $url1 と $url2 をテストしました。最初の URL は正当であり、特殊文字やスペースは含まれていませんが、2 番目の URL にはスペースが含まれており、不正です。プログラムは、validateUrl 関数の戻り値に基づいて URL が正当であるかどうかを判断します。

要約すると、この記事では、PHP 正規表現を使用して URL の正当性を検証する方法を紹介します。 URL 検証の問題は、緩い正規表現を作成し、preg_match 関数を呼び出して URL が形式に準拠しているかどうかを照合することでうまく解決できます。

以上がPHP 正規表現を使用して URL の正当性を検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート