2016-12-20 7 views
0

リモートページの特定のセクションの内容を抽出してPHP文字列(または配列)に保存しようとしています。その特定のセクションでは、次のようになります。DomXPathを使用して特定のクラスの除算のコンテンツを検索して抽出します

<section class="intro"> 
     <div class="container"> 
      <h1>Student Club</h1> 
      <h2>Subtitle</h2> 
      <p>Lore ipsum paragraph.</p> 
     </div> 
</section> 

、同じページ上のクラス「コンテナ」の他のいくつかのセクションがあるので、私はクラスのコンテナを使用して絞り込むことができないので、クラス「イントロの唯一のセクションがありますので、 」私は、右の部門を見つけるために、次のコードを使用します。

$doc = new DOMDocument; 
$doc->preserveWhiteSpace = FALSE; 
@$doc->loadHTMLFile("https://www.remotesite.tld/remotepage.html"); 
$finder = new DomXPath($doc); 
$intro = $finder->query("//*[contains(@class, 'intro')]"); 

そして、この時点で、私は問題を打つんだが - PHPの文字列として$イントロの内容を抽出することはできません。

がさらに

foreach ($intro as $item) { 
        $string = $item->nodeValue; 
        echo $string; 
       } 

は、テキストのみの値を与える次のコードをしようと、すべてのタグが取り除かれて、私は本当に、さらなる操作を必要とするために保存すべてのそれらのdiv、H1とH2とのpタグが必要です。

しよう:

foreach ($intro->attributes as $attr) { 
       $name = $attr->nodeName; 
       $value = $attr->nodeValue; 
       echo $name; 
       echo $value; 
      } 

エラーを与えている:

Notice: Undefined property: DOMNodeList::$attributes in 

だから、私が見つけたDOM要素の完全なHTMLコードを抽出することができますか?

答えて

0

私は...私はちょうど行うために必要なので、近いことを知っていた:

  foreach ($intro as $item) { 
       $h1= $item->getElementsByTagName('h1'); 
       $h2= $item->getElementsByTagName('h2'); 
       $p= $item->getElementsByTagName('p'); 
      } 
関連する問題