2017-09-08 10 views
0

私はそれが要素にアクセスできるように、クエリで見つかったhtml文字列をどのように保存できるかを理解しようとしています。xpathクエリデータをHTMLタグでsaveHTMLに保存する方法は?

以下のクエリを使用して、以下のulリストを探しています。

$data = $xpath->query('//h2[contains(.,"Hurricane Data")]/following-sibling::ul/li'); 

<h2>Hurricane Data</h2> 
<ul> 
    <li><strong>12 items</strong> found, see <a href="/link">here</a>for more information</li> 
    <li><strong>19 items</strong> found, see <a href="/link">here</a>for more information</li> 
    <li><strong>13 items</strong> found, see <a href="/link">here</a>for more information</li> 
</ul> 

I print_r($data)場合は、私が見つかりました。3つの要素を指し、以下DOMNodeList Object ([length] => 3)を取得します。

$dataにI foreach()を入力すると、すべての3つのliデータを含むDOMElementオブジェクトが取得されます。私が達成しようとしている何

は、アクセス可能な配列にそれぞれのliデータを置くことですが、私はあまりにも内部&強いタグHTMLを解析します。

強さとタグが配列に挿入されていないことを除いて、私はすでにやりたいことをすべてやっています。ここで私が思いついたのはここです。

$string = []; 
$query = $xpath->query('//h2[contains(.,"Hurricane Data")]/following-sibling::ul/li'); 
foreach($query as $values){ 
    $try = new \DOMDocument; 
    $try->loadHTML(mb_convert_encoding($values->textContent, 'HTML-ENTITIES', 'UTF-8')); 

    $string[] = $try->saveHTML(); 
} 

echo $string[0]; 
// outputs = 12 items found, see here for more information 
// no strong tags, no hyperlinks 

答えて

1

あなたは$doc

foreach($query as $values){  
    $string[] = $doc->saveHTML($values); 
} 

は、あなたのXPathクエリの基礎として使用された文書である...あなたはちょうどこの特定のノードを保存するために言うことができ、データを再処理する必要はありません。

+0

ナイジェルはとても痩せています。ありがとうございました。 – Craig

関連する問題