2013-04-28 61 views
0

我正在使用php ganon dom解析器來抓取一些html頁面,但我被卡在需要從源讀取一些javascript的JavaScript。PHP ganon如何閱讀javascript

<script type="text/javascript"> 
    Event.observe(window, 'load', function() { 
     ig_lightbox_main_img=0; 
ig_lightbox_img_sequence.push('http://someimageurl.com/image.jpg'); 
ig_lightbox_img_labels.push("Some text"); 
ig_lightbox_img_sequence.push('http://someimageurl.com/image2.jpg'); 
ig_lightbox_img_labels.push("Some text 2"); 
    }); 
</script> 

我想讀的URL形成與我已經使用這個代碼頁的HTML未來對現在

$html = str_get_dom('some page html here'); 
    foreach($html('.product-img-box script[type=text/javascript]') as $script){ 
    echo $script->html(); 
} 

上面的腳本但是這是行不通的。關於如何閱讀腳本的任何想法

回答

0

嘗試將type=text/javascript左右的字符加到$html對象的字符串中。

我看看here,他們有一個例子:

foreach($html('a[href ^= "http://"]') as $element) { 
    $element->wrap('center'); 
} 

我認爲這是/可能已經使其返回錯誤的結果。

編輯

被眼前的問題混爲一談,我認爲問題是,你不能拿到劇本里面的數據,這是因爲你的選擇的。無論如何,經過一番思考,如果你有一個帶有數據的腳本標籤的字符串副本,只需在它上面運行一個正則表達式即可。

這裏是我測試的一個示例:

$string = "<script type=\"text/javascript\"> 
    Event.observe(window, 'load', function() { 
     ig_lightbox_main_img=0; 
ig_lightbox_img_sequence.push('http://someimageurl.com/image.jpg'); 
ig_lightbox_img_labels.push(\"Some text\"); 
ig_lightbox_img_sequence.push('http://someimageurl.com/image2.jpg'); 
ig_lightbox_img_labels.push(\"Some text 2\"); 
    }); 
</script>"; 

$regex = "/\b(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)[-A-Za-z0-9+&@#\/%=~_|$?!:,.]*[A-Za-z0-9+&@#\/%=~_|$]/"; 

$results = array(); 

preg_match_all($regex,$string,$results); 

var_dump($results); 
//Result: array(1) { [0]=> array(2) { [0]=> string(33) "http://someimageurl.com/image.jpg" [1]=> string(34) "http://someimageurl.com/image2.jpg" } } 

$results具有在其內部的URL數據作​​爲從preg_match_allDocumentation)返回。

如果有幫助,一旦你有了URL,你可以在PHP中使用parse_urlDocumentation),它將字符串URL分割成更容易使用的東西。

注意:使用的正則表達式是一個相當簡單的表達式,並不會涵蓋每種情況。如herehere所述,爲此得到完美的正則表達式是非常困難的。

+0

我想讀ig_lightbox_img_sequence.push('http://someimageurl.com/image2.jpg')http; $ html('a [href^=「http://」]')這個選擇器是如何工作的...? – 2013-04-28 07:33:16

+0

不確定你的意思,你的選擇器超出了我在'text/javascript'部分添加'''的提示,因此就像:'.product-img-box script [type =「text/javascript」 ]',給這個鏡頭? – Turnerj 2013-04-28 07:35:15

+0

它只是沒有找到任何東西來迭代? – Turnerj 2013-04-28 07:41:39