2011-01-23 122 views
2

如何檢查用戶輸入的文本是否爲網址?PHP網址識別

假設我想檢查文本是否爲網址,然後檢查字符串中是否有「youtube.com」。之後,我希望獲得鏈接部分的鏈接,如果它們確實存在,那麼在子表格「watch?v =」和任何「&」參數之間我都會感興趣。

回答

5

parse_url()可能是一個很好的選擇。如果您的網址不正確,該功能將返回false。否則,它會將URL分解爲其組件,您可以使用所需的組件。

實施例:

$urlParts = parse_url('http://www.youtube.com/watch?v=MX0D4oZwCsA'); 
if ($urlParts == false) echo "Bad URL"; 
else echo "Param string is ".$urlParts['query']; 

輸出:

Param string is v=MX0D4oZwCsA 

如使用explode()特定參數需要,您可能分裂查詢部分。

編輯:請記住,parse_url()儘可能努力解析給出的字符串,所以不良網址通常會成功,儘管生成的數據數組很奇怪。這顯然取決於你想要驗證的確切性以及你在用戶輸入中究竟需要什麼。

+2

+1不適用於存在特定功能的基於正則表達式的解決方案。 – 2011-01-23 07:01:24

+0

@Sarwar Erfan - 基於正則表達式的解決方案有什麼問題? ) – SaltLake 2011-01-23 07:07:16

0
preg_match('#watch\?v=([^&]+)#', $url, $matches); 
echo $matches[1]; 
0

強烈建議不要使用parse_url()進行URL驗證。 是一個不錯的解決方案。