2013-11-27 54 views
0

麻煩我在PHP中使用preg_match_all webscraping HTML頁面。這是我試圖抓取的東西:與preg_match_all,正則表達式,和/是

<script> 
    function fsb38(x) { 
     var b=new 
     Array(98,100,97,98,98,98,99,50,51,55,53,50,48,100,57,98,50,100,53,100,97,48,100,52,100,57,97,56,97,51,54,99,56,38,104,52,61,53,98,99,54,102,57,55,49,99,55,101,55,61,101,48,98,55,99,57,102,110,56,57,102,98,111,78,54,102,102,109,114,53,111,54,101,102,48,48,38,54,98,61,116,50,97,99,38,56,101,51,57,49,102,61,100,101,105,106,101,63,101,101,57,48,52,112,104,112,46,115,110,111,105,115,115,105,109); 
     var p=new Array(0,0,0,0,1,1,1,0,0,1,0,0,1,1,0,0,1,1,1,0,1,0,1,0,1,0,1,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1,0,0,1,1,0,1,1,0,1,1,1,1,0,1,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1);  
     window.location = c(b,p) + x; 
     return false; 
    } 
    </script> 

通常preg_match_all('/var b=new(.*)var p=new/is', $output, $ar);將工作得很好。但是,由於在整個頁面中出現了多次,所以只顯示1次匹配:我告訴它從哪裏開始擦到最後一次出現var p=new

我已經嘗試過使用它來做到這一點:preg_match_all('/var b=new(.*)(\n)(\s)var p=new/is', $output, $ar); - 但是當我使用它時,我什麼都沒有返回。我究竟做錯了什麼?

回答

2

使用這個,如果你想獲得的所有陣列()

preg_match_all('/var.*?=new(.*?)\)\;/is', $output, $ar); 

使用這個,如果你想只得到B =新的Array()

preg_match_all('/var b=new(.*?)\)\;/is', $output, $ar);