ホームページ  >  記事  >  バックエンド開発  >  プロトコルとドメインプレフィックスの有無にかかわらず URL を照合するにはどうすればよいですか?

プロトコルとドメインプレフィックスの有無にかかわらず URL を照合するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-22 08:47:02376ブラウズ

How to Match URLs with or Without Protocol and Domain Prefixes?

プロトコルとドメイン プレフィックスの有無にかかわらず URL を照合する

URL を操作する場合、多くの場合、URL にHTTP/HTTPS プロトコルまたは「www」ドメイン プレフィックス。これを実現するための正規表現の詳細な内訳は次のとおりです。

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

説明:

  • SCHEME (オプション): 一致URL の先頭に「https」または「http」を付けます。
  • ユーザーとパス (オプション): コロンで区切られたユーザー名またはパスワードと一致します。
  • ホストまたは IP アドレス: ハイフンでつながれた文字列の後にドットとトップレベルのドメインまたは IP アドレスの形式を使用して、ドメイン名または IP アドレスを取得します。
  • ポート (オプション): ドメインの後のポート番号と一致します。
  • パス (オプション): URL のパスを取得します。これには、スラッシュで区切られたディレクトリとファイル名を含めることができます。
  • GET クエリ (オプション): 疑問符の後のクエリ パラメーターと一致します。
  • アンカー (オプション): ハッシュの後のフラグメント識別子をキャプチャします。

この正規表現と照合するには、次の構文を使用します。

<code class="php">preg_match("~^$regex$~i", $url, $m);</code>

これにより、URL 全体がパターンに一致し、オプションの部分が含まれることが保証されます。この正規表現を使用すると、さまざまな形式の URL を確実に照合できます。

以上がプロトコルとドメインプレフィックスの有無にかかわらず URL を照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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