用正規表示式匹配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 函數。例如:
$url = 'www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
echo 'Matched URL without protocol';
}
同樣,對於有協議的 URL:
$url = 'http://www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
echo 'Matched URL with protocol';
}
此模式應涵蓋廣泛的 URL 格式,同時還可以防止包含「/」等字元的潛在惡意輸入。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3