2

HTMLからデータを取得しようとしています

$xdata = simplexml_import_dom($doc);
$datas = $xdata->xpath("//*[@class='proglist']");
$aData = array();
foreach($datas as $data)
{   

    $rightdatas = $data->xpath("*[@class='progright']");
    $rt = $rightdatas[0];
    print_r($rt);
    $content  = $rt->xpath("*[@class='progrighthead']");
    print_r($content  );
}

クラス$rtよりも内容を印刷している場合、変数は空です。なんで?progrighthead$content

次の構文で同じ結果が得られるのはなぜですか?

$xdata = simplexml_import_dom($doc);
$datas = $xdata->xpath("//*[@class='proglist']");
$aData = array();
foreach($datas as $data)
{   

    $rightdatas = $data->xpath("*[@class='progright']");
    $rt = $rightdatas[0];
    print_r($rt);
    $content  = $rt->xpath("*[@class='progrighthead']");
}    

$datas    = $xdata->xpath("//*[@class='progrighthead']");
4

1 に答える 1

2

progrighthead は progright の子ではなく、子孫です。使用する

$rt->xpath(".//*[@class='progrighthead']");

先頭に置く//ということは、現在の要素からではなく、ルートから検索することを意味します。

于 2012-07-27T13:12:40.460 に答える