首頁  >  文章  >  後端開發  >  如何使用正規表示式檢測不同格式的 URL?

如何使用正規表示式檢測不同格式的 URL?

Susan Sarandon
Susan Sarandon原創
2024-10-22 08:45:30569瀏覽

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 &$_.-*)?"
  • 錨: "(#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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn