2017-08-04 5 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をスローします。

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

+0

「未定義のメソッド」を呼び出しますか? –

+0

@u_mulder未定義のエラー:定義されていないメソッドを呼び出すDOMDocumentType :: getAttribute() – Quest

答えて

2

このコードを試してみてくださいforeachの

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

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

しかし、内部にdivを入れ子にしています。しかし、それは私が望むものではありません – Quest

+0

$ query = "// div [@ data-filter]";クエリを変更すると、属性データフィルタを持つdivのみが取得されます – PraveenKumar

+0

ありがとう!しかし、私はそれでいくつかの困難を抱えています。私は、データフィルタ属性の部分文字列としてstrを含まないすべてのdivをフィルタリングする必要があります。あなたはそれで私を助けることができますか? – Quest

0

変更あなたのコード以下のように、このPHPを

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

または使用します:

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を参照してください。

関連する問題