ホームページ >バックエンド開発 >PHPチュートリアル >正規表現を使用してさまざまな形式の URL を検出するにはどうすればよいですか?

正規表現を使用してさまざまな形式の URL を検出するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-22 08:45:30656ブラウズ

How to Detect URLs of Varying Formats Using Regular Expressions?

正規表現を使用したさまざまな形式の URL の検出

正規表現は、URL などの複雑な文字列からデータを抽出する強力な方法を提供します。 「http://www」プレフィックスを含む URL を扱うかどうかに関係なく、包括的な正規表現でニーズを満たすことができます。

次の式は、「http」の有無にかかわらず URL と一致するように作成されています。 ://www" プレフィックス:

((https?|ftp)://)?([a-z0-9+!*(),;?&=$_.-]+(:[a-z0-9+!*(),;?&=$_.-]+)?@)?([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})))(:[0-9]{2,5})?(/([a-z0-9+$_%-]\.?)+)*/?(\?[a-z+&$_.-][a-z0-9;:@&%=+/$_.-]*)?(#[a-z_.-][a-z0-9+$%_.-]*)?

この式には次のコンポーネントが組み込まれています:

  • スキーム: "(https?|ftp)://"
  • ユーザーとパスワード: "([a-z0-9 !*(),;?&=$_.-] (:[a-z0-9 !*(),;?&=$_.-] )?@)"
  • ホストまたは IP アドレス: "([a-z0-9-.]*).(([a-z]{2,4})|([0-9]{1 ,3}.([0-9]{1,3}).([0-9]{1,3})))"
  • ポート: "(:[0-9]{2 ,5})?"
  • パス: "(/([a-z0-9 $_%-].?) )*/?"
  • GET クエリ: "(?a-z &$_.-*)?"
  • Anchor: "(#a-z_.-*)?"

この式を利用するには、以下の PHP コードを使用できます。 :

if(preg_match("~^$regex$~i", 'www.example.com/etcetc', $m))
    var_dump($m);

if(preg_match("~^$regex$~i", 'http://www.example.com/etcetc', $m))
    var_dump($m);

このコードは、「http://www」プレフィックスの存在に関係なく、両方の URL に正常に一致します。

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

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