ホームページ  >  記事  >  バックエンド開発  >  正規表現を使用して URL を照合するにはどうすればよいですか?

正規表現を使用して URL を照合するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-22 08:45:03333ブラウズ

How to Match URLs Using Regular Expressions?

正規表現による URL のマッチング

正規表現は最初は難しいかもしれませんが、さまざまなデータ型に対して強力なパターン マッチング機能を提供します。 URL を抽出するコンテキストでは、URL 形式のバリエーションに対応する柔軟なパターンが必要です。

主要なプロトコルの有無にかかわらず URL をキャプチャできる 1 つの堅牢な正規表現 (例: "http://www" または " www") は次のとおりです:

((https?|ftp)://)? // Optional SCHEME
([a-z0-9+!*(),;?&=$_.-]+(:[a-z0-9+!*(),;?&=$_.-]+)?@)? // Optional User and Pass
([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3}))) // Host or IP address
(:[0-9]{2,5})? // Optional Port
(/([a-z0-9+$_%-]\.?)+)*/? // Path
(\?[a-z+&$_.-][a-z0-9;:@&%=+/$_.-]*)? // Optional GET Query
(#[a-z_.-][a-z0-9+$%_.-]*)? // Optional Anchor

PHP でこの式を使用するには、二重引用符で囲み、評価する URL とともに preg_match 関数に渡します。例:

<code class="php">$url = 'www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
    echo 'Matched URL without protocol';
}</code>

同様に、プロトコルを含む URL の場合:

<code class="php">$url = 'http://www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
    echo 'Matched URL with protocol';
}</code>

このパターンは、幅広い URL 形式をカバーすると同時に、「」などの文字を含む潜在的な悪意のある入力からも保護する必要があります。 /".

以上が正規表現を使用して URL を照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。