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

Patricia Arquette
發布: 2024-10-22 08:45:03
原創
328 人瀏覽過

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中文網其他相關文章!

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