2017-08-04 81 views
0

我有以下的html:获取所有div的数据筛选器属性

<div class="" data-filter="01"> 
    ... 
</div> 
<div class="" data-filter="02356"> 
    .... 
</div> 
<div class="" data-filter="02356"> 
    ... 
</div> 

我怎样才能在PHP所有这些div的数据筛选器属性?

我已经试过类似

$doc = new DOMDocument(); 
$doc->loadHTMLFile("items.html"); 

foreach ($doc->childNodes as $item){ 
    echo $item->getAttribute('data-filter'); 
} 

但抛出Call to undefined method error

+0

调用什么'未定义的方法? –

+0

@u_mulder未捕获的错误:调用未定义的方法DOMDocumentType :: getAttribute() – Quest

回答

2

试试这个代码:

$doc = DOMDocument::loadHTML($html); 
$xpath = new DOMXPath($doc); 
$query = "//div[@class='']"; 
$entries = $xpath->query($query); 
foreach ($entries as $entry) { 
    echo "Found: " . $entry->getAttribute("attrloc"); 
} 

或使用PHP

http://simplehtmldom.sourceforge.net/manual.htm

+0

但是我嵌套了divs里面..这会让他们太正确吗?但这不是我想要的 – Quest

+0

$ query =“// div [@ data-filter]”;更改查询,这将只获得具有属性数据的div-filter – PraveenKumar

+0

谢谢!但是我有一些困难。我需要筛选出每个不包含str作为数据过滤属性中子字符串的div。你能帮助我吗? – Quest

0

改变你的代码如下:需要在的foreach

$doc = new DOMDocument(); 
$doc->loadHTMLFile("items.html"); 

foreach ($doc->getElementsByTagName('div') as $item){  
    echo $item->getAttribute('data-filter'); 
} 
0

下面的代码cahnge方法为我工作:

$doc = new DOMDocument(); 
    $doc->loadHTMLFile("items.html"); 

    $elements = $doc->getElementsByTagName('div'); 

    if (!is_null($elements)) { 
    foreach ($elements as $element) { 
     echo $element->getAttribute('data-filter').'<br>'; 
    } 

欲了解更多信息,请参阅DOMDocument::loadHTMLFile in the PHP documentation