首頁 >後端開發 >php教程 >如何使用正規表示式來匹配URL?

如何使用正規表示式來匹配URL?

Patricia Arquette
Patricia Arquette原創
2024-10-22 08:45:03435瀏覽

How to Match URLs Using Regular Expressions?

用正則表達式匹配URL

正則表達式一開始可能會讓人望而生畏,但它們為不同的數據類型提供了強大的模式匹配功能。在提取 URL 的上下文中,需要一個靈活的模式來適應 URL 格式的變化。

一個強大的正規表示式,可以捕獲帶有或不帶有領先協議的URL(例如,“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中文網其他相關文章!

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