我想在下面的正則表達式查詢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
值。有人知道我的語法有什麼問題嗎?
我想在下面的正則表達式查詢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
值。有人知道我的語法有什麼問題嗎?
你忘了大寫字母
http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-zA-Z0-9-_]+)
使用parse_url()
函數。它更容易使用:
$url_components = parse_url("http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1");
echo $url_components['query'];
從那裏我認爲你可以做其餘的,並切掉第一對字母。一旦你這樣做,你只剩下v=
之後的東西。
你是不是逃避時期 ''在video.php中。我也使用不同的分隔符,如果我逃跑的路徑/ URL的 - 這樣的:
preg_match("#http://www\.domain\.code/videos/video\.php\?.*v=([^&]*)#", $url, $matches);
如果V =在查詢字符串的中間,
v=([^&]*)
..會匹配一切行動到另一個&符號,以防萬一字符和_以外的字符 - 由於某種原因最終出現在那裏。
不區分大小寫的修飾符也可以工作(並且可能更好,因爲域也可以是混合大小寫) – Spudley