用正則表達式匹配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中文網其他相關文章!