2017-05-08 4 views
0

Webサイトから画像を解析し、phpファイルに出力したいと思います。私はクラスごとに要素を取得していますが、今はsrcに属性を付けてイメージを印刷したいと考えています。どうすればそれを達成できますか?simplexmlで画像srcを取得する方法

$htmlDoc = new DOMDocument(); 
$htmlDoc->loadHTML($result); 

$simpleHtml = simplexml_import_dom($htmlDoc); 
$image = $simpleHtml->xpath('//img[@class^="pdt-thumbnail-image"]@src'); 

foreach($image as $img) { 
    echo '<img =src"'.$img[0].'">'; 
} 

HTML構造

<img role="presentation" class="pdt-thumbnail-image is-active lazy-image is-loaded" data-reactid="174" src="https://d2xngy2dw7hums.cloudfront.net/media/photos/products/2016/08/04/samsung_car_fast_charger_1470291965_408c5b7a.jpg"> 

出力エラー:

Invalid argument supplied for foreach() 
+0

$ image = $ simpleHtml-> xpath( '// img [@class^= "pdt-thumbnail-image"]/@ src'); –

+0

http://stackoverflow.com/questions/1652128/accessing-attribute-from-simplexmlを見ましたか?現在のコードを再現できるようにサンプルXMLを含めると、問題は改善されます。 – chris85

+0

@ chris85追加! – Andrew

答えて

0

あなたのエラーログを確認したり、開発環境にdisplay_errorsをオンにした場合、あなたは、XPathという警告が表示されるはずです[@class^="pdt-thumbnail-image"]は有効なXPathではないため、評価に失敗しました。 (XMLライブラリPHPは、XPath 1.0のみを使用してサポートしていることに注意してください。)

を代わりに、あなたはクラス、the contains functionマッチングのために有用the starts-with function、またはおそらくそれ以上を使用する必要があります。また、あなたが欠落していたことを

$simpleHtml->xpath('//img[contains(@class, "pdt-thumbnail-image")]/@src'); 

注意を//@srcに設定します。

関連する問題