如何使用简单的html dom获取div内部文本

时间:2011-03-12 17:22:14

标签: javascript html dom

<div style="float: left; margin-top: 10px; font-family: Verdana; font-size: 13px; color: #404040;">innertext</div>

我是否可以使用简单的html dom php解析器访问没有classid但是span的div的innertext?感谢。

4 个答案:

答案 0 :(得分:4)

如果样式一致,那么您可以遍历文档中的所有div并按样式过滤它们。

var divs = document.getElementsById("div");

for (var i = 0; i < divs.length; i++) {
    var div = divs[i];

    // skip the current div if its styles are wrong
    if (div.style.cssFloat !== "left"
     || div.style.marginTop !== "10px"
     || div.style.fontFamily !== "Verdana"
     || div.style.fontSize !== "13px"
     || div.style.color !== "#404040") continue;

    var text = div.innerText || div.textContent;

    // do something with text
}

答案 1 :(得分:3)

如果没有styleid,则可以使用class代码的内容:

include('simple_html_dom.php');
$html = file_get_html('http://www.mysite.com/');
foreach($html->find('div[style="float: left; margin-top: 10px; font-family: Verdana; font-size: 13px; color: #404040;"]') as $e)
echo $e->innertext;

答案 2 :(得分:0)

您可能会尝试匹配他们的一些父母(已设置classid),然后将DOM遍历到您想要的孩子。

答案 3 :(得分:0)

感谢所有人。我过分依赖simple_html_dom,Ben Blank给了我一个好方法。 我也尝试使用php regular-expression来匹配div。

preg_match_all('/<div.*(style="float: left; margin-top: 10px; font-family: Verdana; font-size: 13px; color: #404040;").*>([\d\D]*)<\/div>/iU',$html,$match);
print_r($match);