2013-10-23 49 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