2009-12-03 84 views
0

我不能让标签之间的数据放入数组:解析HTML用PHP

// Load the HTML string from file and create a SimpleXMLElement 
$html_string = file_get_contents("data/csr.html"); /*the string really is in $html_string*/ 
$root = new SimpleXMLElement($html_string); 

问题就在这里开始时,我试图获取标签之间的值:和DIV,H2跨越到一个数组

// Fetch all div, h2 and span values 
$divArray = $hdlsArray = $dtlsArray = array(); 
    foreach ($root->div as $div) { 
    $divArray[] = $div; 
    echo "".$div."<br />"; 
} 
foreach ($root->h2 as $h2) { 
    $hdlsArray[] = $h2; 
    echo "".$h2."<br />"; 
} 
foreach ($root->span as $span) { 
    $dtlsArray[] = $span; 
    echo "".$span."<br />"; 
} 

这样做的结果是一个空白页,而不是打印(约SimpleXML的)实际标签数据

回答

1

This page说:“它唯一的问题是,它只会重新加载有效的XM L“,但可能会为HTML提供解决方法。

StackOverflow的'相关问题'包括this one,但它描述了有效的XML标签中的HTML

+0

这看起来像我尝试simplexml之前的旧代码。此外,它返回错误(新的DOMDocument)。我知道的错误是因为一些与zend扩展冲突。这就是我使用simplexml代替的原因。 只需要将标签之间的内部数据转换为数组。 – megatr0n 2009-12-03 06:05:26

+0

对我来说不幸的是,最后一个链接与我在这里想要完成的事情没有什么关系,但我真的很喜欢你的精神。 – megatr0n 2009-12-03 06:29:51

2

作为SimpleXMLElement的替代品,我建议Simple HTML DOMonline manual)。我以前用过它,对结果非常满意。它允许你像选择器一样使用jQuery,因此提取所有div,h2和span值非常简单。

+0

我真的不想去第三方,但我想现在它似乎是最好的选择。谢谢。 – megatr0n 2009-12-03 08:21:14

+1

其开源! – 2009-12-03 14:07:01