2012-05-18 31 views
0

我想在下面的正則表達式查詢v的價值相匹配:如何在php中使用正則表達式匹配url?

http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-z0-9-_]+) 

樣本網址:

http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1 

的網址永遠是www和我只是想匹配v值。有人知道我的語法有什麼問題嗎?

回答

1

你忘了大寫字母

http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-zA-Z0-9-_]+) 
+0

不區分大小寫的修飾符也可以工作(並且可能更好,因爲域也可以是混合大小寫) – Spudley

2

使用parse_url()函數。它更容易使用:

$url_components = parse_url("http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1"); 

echo $url_components['query']; 

從那裏我認爲你可以做其餘的,並切掉第一對字母。一旦你這樣做,你只剩下v=之後的東西。

0

你是不是逃避時期 ''在video.php中。我也使用不同的分隔符,如果我逃跑的路徑/ URL的 - 這樣的:

preg_match("#http://www\.domain\.code/videos/video\.php\?.*v=([^&]*)#", $url, $matches); 

如果V =在查詢字符串的中間,

v=([^&]*) 

..會匹配一切行動到另一個&符號,以防萬一字符和_以外的字符 - 由於某種原因最終出現在那裏。