2011-04-21 42 views
0
<?php 
$source='http://www.google.com/finance'; 
//$source='sample.txt'; 
$page_all = file_get_contents($source); 
$div_array=array(); 
preg_match_all('#<div id="markets">(.*?)</div>#sim', $page_all, $div_array); 
//print_r($div_array); 
print_r($div_array[1]); 
?> 

我有這樣的代碼。我正在嘗試從google/finance返回特定div的內容。使用正則表達式獲取內容頁面

所有我最終屏幕上雖然是數組()

任何想法。

問候

+0

什麼的print_r的輸出也這傢伙有一些合理的答案,你想做什麼:http://stackoverflow.com/questions/1732348/regex-match-open-tags-除-xhtml-self-contained-tags/1732454#1732454 – halfdan 2011-04-21 08:32:21

+0

請確保允許您從URL讀取文件(安全風險很低的系統) – knittl 2011-04-21 08:33:20

+0

試試'echo $ div_array [0]' – 2011-04-21 08:33:36

回答

1

不要使用正則表達式對這類事情,儘量DOM解析器如SimpleHTMLDom

<?php 
require_once('simple_html_dom.php'); 
echo file_get_html('http://www.google.com/finance')->find('#markets', 0); 
?> 

是啊......就這麼簡單:)

編輯:

在回答您的意見,不料SimpleHTMLDom迷死:

<?php 
require_once('simple_html_dom.php'); 

$html = file_get_contents('http://www.google.com/finance'); 
$tidy = tidy_parse_string($html); 
$tidy->cleanRepair(); 
$html = str_get_html((string)$tidy); 

foreach($html->find('#markets .quotes', 0)->find('tr') as $line) { 
    printf("%s - %s - %s %s<br />", 
     $line->find('.symbol a', 0)->innertext, 
     $line->find('.price span', 0)->innertext, 
     $line->find('.change span', 0)->innertext, 
     $line->find('.change span', 1)->innertext); 
} 
?> 

呀,我不得不對該頁面使用Tidy ......我不知道Google僱傭誰來做HTML,但這絕對是可怕的。未關閉的TD的,具有相同的ID等多種元素...解析器哽咽那些:(

+0

這是血腥的awsome。有沒有一種方法可以合併條形碼標籤以刪除鏈接? – Minikoopa 2011-04-21 09:00:28

+0

@Minikoopa,請參閱編輯:) – 2011-04-21 09:14:30

+0

我收到致命錯誤:致電第5行未定義的函數tidy_parse_string() – Minikoopa 2011-04-21 09:21:00

0

我沒有在「http://www.google.com/finance」 HTML頁面發現<div id="markets">,卻發現<div id=markets>,然後嘗試:

<?php 
$source='http://www.google.com/finance'; 
//$source='sample.txt'; 
$page_all = file_get_contents($source); 
$div_array=array(); 
preg_match_all('#<div id=markets>(.*?)</div>#sim', $page_all, $div_array); 
//print_r($div_array); 
print_r($div_array[1]); 
?> 
相關問題