2012-05-01 89 views
1

我試圖抓取部分URL來創建嵌入代碼。我有以下URL結構:特定URL結構的preg_match

http://www.mtv.com/videos/foster-the-people/761507/houdini.jhtml#id=1518072&vid=761507

我需要使用preg_match打破URL成幾塊。理想情況下,我想測試URL的結構並從URL中獲取數字值。最後,我想preg_match後以下形式的數組:

Array (
    0 => 761507 
    1 => 1518072 
    2 => 761507 
) 

注意,「寄養的人民」和「霍迪尼」是可以包含字母,數字和動態元素「 - 」,將從URL更改爲URL。

感謝您的幫助!

回答

2

試試這個:(修訂版)

http:\/\/www\.mtv\.com\/videos\/.*?\/([0-9]+)\/.*?id=([0-9]+)&vid=([0-9]+) 

演示:

http://regexr.com?30qo4


代碼:

<?php 
    $subject = "http://www.mtv.com/videos/foster-the-people/761507/houdini.jhtml#id=1518072&vid=761507"; 
    $pattern = '/http:\/\/www\.mtv\.com\/videos\/.*?\/([0-9]+)\/.*?id=([0-9]+)&vid=([0-9]+)/'; 
    preg_match($pattern, $subject, $matches); 
    print_r($matches); 

?> 

輸出:

Array 
(
    [0] => http://www.mtv.com/videos/foster-the-people/761507/houdini.jhtml#id=1518072&vid=761507 
    [1] => 761507 
    [2] => 1518072 
    [3] => 761507 
) 

提示:你需要的元素是$matches[1]$matches[2]$matches[3]

+0

感謝您的幫助!這是一個很好的開始。我也需要匹配其餘的結構。我需要通過查看其餘的結構來確保這是一個MTV視頻鏈接。 – tollmanz

+0

@沙丁那麼,你的意思是你想確保它是以'http:// www.mtv.com/videos /'開頭的東西? –

+0

@沙丁魚我的回答已經完全更新。看一看! ;-) –

0

我會建議你使用parse_url率先打破您的網址個別組件,然後根據需要使用preg_match從獲取各個子項其中$urlarr是parse_url的返回值。

+0

感謝您的建議!通常,我會這樣做(主要是因爲我的正則表達式技能缺乏),但在這種情況下,我正在使用一個API,需要我指定正則表達式匹配。謝謝你的想法! – tollmanz