如何匹配帶有或不帶協定和網域前綴的 URL?

Barbara Streisand
發布: 2024-10-22 08:47:02
原創
375 人瀏覽過

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

匹配帶或不帶協議和域前綴的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>
登入後複製

說明:

  • 方案(可選): 符合URL 開頭的「https」或「http」。
  • 使用者和密碼(可選): 符合以冒號分隔的使用者名稱或密碼。
  • 主機或 IP 位址: 使用連字字串後接一個點和頂級網域或 IP 位址格式擷取網域名稱或 IP 位址。
  • 連接埠(可選): 匹配網域後面的連接埠號碼。
  • 路徑(可選): 捕捉 URL 的路徑,其中可以包含由斜線分隔的目錄和檔案名稱。
  • GET 查詢(可選): 符合問號後的任何查詢參數。
  • 錨點(可選): 捕捉雜湊後的片段識別碼。

要檢查此正規表示式,請使用下列語法:

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

這可確保整個 URL 與模式相符並包含任何可選部分。透過使用此正規表示式,您可以可靠地匹配各種格式的 URL。

以上是如何匹配帶有或不帶協定和網域前綴的 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!