2010-09-16 46 views
1

我試圖在Youtube視頻頁面上匹配一些Javascript。該模式多數民衆贊成每個視頻同樣是這樣的:無法使用preg_match匹配此主題

<param name=\"flashvars\" value=\"somethingsomethingsomething\"> 

我需要擺脫一切value,在這種情況下somethingsomethingsomething。它被註釋掉,因爲它嵌入在Javascript中。這是我使用的代碼:

preg_match('<param name=\\"flashvars\\" value=\\"(.*)\\">', $ytPage, $match); 

$ytPage是YouTube頁面的源代碼。但是當我運行代碼$matches永遠不會返回匹配。

有什麼我做錯了嗎?

+1

[RegEx match open tags but XHTML self-contained tags]可能的重複(http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – durron597 2015-09-07 21:24:56

+0

可能的[如何解析和處理PHP中的HTML/XML?]的副本(http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php) – 2015-09-07 21:33:30

回答

1

你的問題是你應該用分隔符圍繞你的正則表達式,例如斜槓。

preg_match('/...../', ...); 

示例代碼:

$ytPage= "<param name=\"flashvars\" value=\"somethingsomethingsomething\">"; 
preg_match('/<param name=\\"flashvars\\" value=\\"(.*)\\">/', $ytPage, $match); 
print_r($match) 

結果:

 
Array 
(
    [0] => <param name="flashvars" value="somethingsomethingsomething"> 
    [1] => somethingsomethingsomething 
) 

ideone

如果你試圖解析HTML,你可能要考慮,如果一個HTML解析器將是一個比正則表達式更適合的工具。

+0

對不起,'$ matches'是一個錯字。真正的變量叫做'$ match'。上面提到的修復程序也不起作用。但我想我已經找到了問題。只有部分Youtube視頻源代碼以$ ytPage返回。我不知道這是否是cURL的限制(我得到頁面的方式),還是其他東西......但現在至少我知道這部分工作。謝謝你的幫助 :) – Will 2010-09-16 23:59:06