2013-10-23 84 views
1

我想從網頁中的表中獲取值,並且我正在使用Simple HTML Dom庫。這是我的代碼看起來像:使用簡單的HTML Dom庫從網頁獲取值

include('simple_html_dom.php'); 

$html = file_get_html('http://www.lvbp.com/posicion.html'); 

$arr = array(); 
foreach ($html->find('tr') as $e) { 
    array_push($arr, $e->innertext); 
} 

echo '<pre>'; 
print_r($arr); 
echo '</pre>'; 

for ($i = 2; $i < count($arr); $i++) { 
    str_replace("", "-", $arr[$i]); 
    print_r($arr[$i]); 
} 

而且我得到這個作爲輸出時print_r($arr)

Array 
(
    [0] =>  EQUIPOS  J  G  P  Vent  
    [1] => 
    [2] =>  Navegantes  11  8  3  0  
    [3] =>  Tigres  11  8  3  0  
    [4] =>  Caribes  11  6  5  2  
    [5] =>  Leones  11  6  5  2  
    [6] =>  Aguilas  11  5  6  3  
    [7] =>  Tiburones  10  4  6  3.5  
    [8] =>  Cardenales  10  3  7  4.5  
    [9] =>  Bravos  11  3  8  5  
) 

但是,從這裏我需要分別意爲「納維根特斯」,「11」,「8 「等等......對於每個陣列位置。對於我的最後一個碼:

for ($i = 2; $i < count($arr); $i++) { 
    str_replace("", "-", $arr[$i]); 
    print_r($arr[$i]); 
} 

但它不工作,因爲我得到這個結果爲:

Navegantes 11 8 3 0 Tigres 11 8 3 0 Caribes 11 6 5 2 Leones 11 6 5 2 Aguilas 11 5 6 3 Tiburones 10 4 6 3.5 Cardenales 10 3 7 4.5 Bravos 11 3 8 5 

什麼我失蹤?任何幫助?

UPDATE

這是我的代碼看起來像基於建議:

include('simple_html_dom.php'); 
$html = file_get_html('http://www.lvbp.com/posicion.html'); 

$arr = array(); 
foreach ($html->find('tr') as $e) { 
    $narr = array(); 
    foreach ($e->find('td') as $vp) { 
     array_push($narr, $vp->plaintext); 
    } 
    $arr[] = array($narr); 
} 
+0

使用$改編[$ i] = str_replace函數( 「」, 「 - 」,$改編[$ i]);而不是str_replace(「」,「 - 」,$ arr [$ i]); – Subin

+0

@Subin改變,但得到相同的結果,沒有破折號( - )之間的單詞 – Reynier

+0

你是否試圖將** td **的每個值作爲數組獲取** tr **? – Subin

回答

1

試試這個:而不是

$arr = array(); 
foreach ($html->find('tr') as $e) { 
$narr=array(); 
foreach($e->find('td') as $vp){ 
    array_push($narr,$vp->plaintext); 
} 
$arr[]=array($narr); 
} 

foreach ($html->find('tr') as $e) { 
    array_push($arr, $e->innertext); 
} 

拖放代碼:

for ($i = 2; $i < count($arr); $i++) { 
    str_replace("", "-", $arr[$i]); 
    print_r($arr[$i]); 
} 

您將獲得帶有按鍵的排列爲TR標籤和它們的值,因爲每個TD的TR

+0

不,你錯了我得到這個錯誤:'PHP致命錯誤:調用成員函數find()在非對象/ var /第29行中的www/html/reader/parser/posicion.php,引用者:http:// devserver/reader/parser /,其中第29行是foreach($ code-> find('td')as $ vp){ ...' – Reynier

+0

@Reynier更新後的代碼。試試看。 – Subin

+0

得到一個空白頁面和相同的錯誤 – Reynier

0

下面是一個形式給出:

// includes Simple HTML DOM Parser 
include "simple_html_dom.php"; 

$url = "http://www.lvbp.com/posicion.html"; 

//Create a DOM object 
$html = new simple_html_dom(); 
// Load HTML from a string 
$html->load_file($url); 

// parse rows 
foreach ($html->find('tr') as $i => $row) { 

    // Skip the second empty row 
    if ($i == 1) 
     continue; 

    // parse and print cells 
    foreach ($row->find('td') as $j => $col) { 
     echo $col->plaintext; 
     echo "|"; 
    } 
    echo "<hr>"; 
} 


// Clear DOM object (needed essentially when using many) 
$html->clear(); 
unset($html); 

Live DEMO