我需要幫助創建一個匹配所有網址的正則表達式,例如,請不要將問題作爲重複關閉,因爲我一直在尋找我需要很長時間的東西,而沒有答案看到已經給出瞭解決我的問題的答案。PHP的正則表達式匹配所有網址
website.com
www.website.com
什麼也尾隨
www.website.com/path-to-something
我編碼的東西,縮短任何URL,但要做到這一點,首先我需要配合他們。
感謝
我需要幫助創建一個匹配所有網址的正則表達式,例如,請不要將問題作爲重複關閉,因爲我一直在尋找我需要很長時間的東西,而沒有答案看到已經給出瞭解決我的問題的答案。PHP的正則表達式匹配所有網址
website.com
www.website.com
什麼也尾隨
www.website.com/path-to-something
我編碼的東西,縮短任何URL,但要做到這一點,首先我需要配合他們。
感謝
這一場比賽都正確,你貼:
preg_match_all('#[[email protected]:%_\+.~\#?&//=]{2,256}\.[a-z]{2,4}\b(\/[[email protected]:%_\+.~\#?&//=]*)?#si', $targetString, $result);
請精心策劃...? – Aquillo 2013-05-10 11:55:50
我得到一個錯誤:警告:preg_match():未知的修飾符'{'我需要將它包裹在某些東西? – 2013-05-10 11:56:28
這在JS中有效,我會嘗試將其轉換。 – 2013-05-10 11:58:45
您可以使用下面的技巧:
$url = "your URL"
$validation = "/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";
if((bool)preg_match($validation, $url) === false)
echo 'Not a valid URL';
我認爲它可能對你的作品。
你想用這樣的:
$string = 'www.blah.com';
$temp_string = (!preg_match('#^(ht|f)tps?://#', $string)) // check if protocol not present
? 'http://' . $string // temporarily add one
: $string; // use current
if (filter_var($temp_string, FILTER_VALIDATE_URL))
{
echo 'is valid';
} else {
echo 'not valid';
}
此使用PHP的構建URL驗證。它將首先檢查協議是否存在,如果不存在,它會臨時將一個字符串添加到要檢查的字符串中,然後通過驗證來運行它。這與目前接受的答案不同。
這是否與gooogle.com和www.google.com匹配? – 2013-05-12 10:59:11
是http://viper-7.com/Jz7nR1和是http://viper-7.com/Iv9SiS – 2013-05-12 11:03:03
上面的代碼所做的是,如果它發現一個無效的URL,它並不以http:// https:// ftp://或ftps://它會暫時添加http://,使其成爲一個完整的URL,然後可以安全地將其傳遞到內置URL驗證功能的PHP中。否則,如果它已經包含它,它將直接傳遞給驗證函數。 – 2013-05-12 11:04:26
請勿使用正則表達式。有一個PHP功能可以做你想做的事。
問題是要求如何分解URL這樣的東西,以便可以檢查等價鏈接是否轉到等同的地方,而不是它是否有效或不。他想檢查主機是否相同,路徑是否相同等。 – Danack 2013-05-11 00:51:51
實際上,我們會縮短無效的網址,如果有人使用google.com,我們會匹配可能成爲網址的內容。從技術上講,這將是無效的,但我們只是尋找解決它,然後縮短它....解析網址是不是我們需要的,我們已經有一個使用正則表達式工作完全按照我們想要的解決方案,感謝您張貼您的答案無論如何。 – 2013-05-12 10:57:12
@Danack parse_url():_這個函數並不是要驗證給定的URL,它只是把它分解成上面列出的部分._ – Fredmat 2015-05-21 17:07:39
到目前爲止你的努力是什麼? – Rikesh 2013-05-10 11:53:13
我已經嘗試過不同的表達式,Regex並不完全是我的特長...(http:// [^] +),這是我現在所擁有的,但它只匹配一種。 – 2013-05-10 11:53:57
@Spudley:不要這麼想,因爲'website.com'不是一個有效的URL,而且用例不同。 OP想要搜索匹配的基本URL。 – Aquillo 2013-05-10 12:06:20