2

私はphpを初めて使用し、次のphpコードによって生成された配列からいくつかのフィールドを取得するという典型的な問題を抱えていました:

$html=file_get_html("http://www.flipkart.com/books/9781846467622");

$e = $html->getElementById("mprodimg-id");
echo $e;
$f = $e->find('img');
echo $f['data-src'];

コードで var_dump($f) を適用した後に表示される出力配列 f は次のとおりです。

Array ( [0] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => img [attr] => Array ( [onerror] => img_onerror(this); [data-error-url] => http: //img1a.flixcart.com/img/book.jpg [高さ] => 275 [幅] => 275 [データソース] => http://img7a.flixcart.com/img/622/9781846467622.jpg [src] => data:image/gif;base64,R0lGODlhAQABAJEAAAAAAAP////Ly8v///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw== [onload] => lzld(this) [alt] => Buy Numbers [タイトル] => Numbers ) [children ] => 配列 ( ) [ノード] => 配列 ( )

フィールド「data-src」の値をエコーする必要があります。誰か助けてください。

firebug で表示される html は、これをスクレイピングする必要がある場所から次のようになります。

<div id="mprodimg-id" class="mprodimg">             
<img width="275" height="275" title="Numbers" alt="Buy Numbers" onload="lzld(this)" src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP////Ly8v///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==" data-src="http://img7a.flixcart.com/img/622/9781846467622.jpg" data-error-url="http://img1a.flixcart.com/img/book.jpg" onerror="img_onerror(this);">
</div>
4

1 に答える 1

2

これはきれいな作業例です:

// includes Simple HTML DOM Parser
include "simple_html_dom.php";

$url = "http://www.flipkart.com/numbers/p/9781846467622?pid=9781846467622";

//Create a DOM object
$dom = new simple_html_dom();
// Load HTML from url
$dom->load_file($url);


// Find the wanted image using the appropriate selectors
$img = $dom->find('#mprodimg-id img', 0);


// Find succeeded
if ($img){
    echo $img->{'data-src'};
}
else
    echo "Find function failed !";


// Clear DOM object (needed essentially when using many)
$dom->clear(); 
unset($dom);

OUTPUT
======
http://img7a.flixcart.com/img/622/9781846467622.jpg

ライブデモ

于 2013-10-23T21:04:28.050 に答える