0

ここで小さな問題があります。現時点では、検索の量を解決できていません。cURLを使用して、診断ツールからデータを取得するスクリプトを作成しています。これがどのように機能するかについてもっと説明することはできますが、問題は構文の問題であり、何が必要かわからないのです。これが私のコードです:

    $dom = new domdocument;
    $dom->loadHTML($curlhtml);
    $finder = new DomXPath($dom);
    $headname="msg_head";
    $statname="msg_sub_head";
    $headnodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $headname ')]");     
    foreach ($headnodes as $head) 
    {
        $header = $head->nodeValue;
        $headarray[] = $head->nodeValue;

        $statnodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $statname ')]");

        ${$header}[] = $statnodes->nodevalue;
    }

私の目標は、「statnodes」クエリのすべての結果を、「headnodes」クエリのすべての結果にちなんで名付けられた個別の配列にロードすることです。

$ headはforeachループで宣言されているため、$ head-> nodeValueは、必要に応じて正確に取得します。ただし、$statnodes->nodeValueはそうではありません。私はそれがそのように機能するべきではないことを知っていますが、私はこれをどのように達成できるかわかりません。

フィードバックをいただければ幸いです。説明が必要な場合は、必要に応じて回答と編集を提供させていただきます。

4

1 に答える 1

0

DOMXPath::queryを返すDOMNodeListので、を介して要素にアクセスすることもできますDOMNodelist::item。クエリ結果の最初の値の後であると仮定すると、${$header}[] = $statnodes->item(0)->nodevalue;すべての値が必要な場合は、それを実行またはループすることができます。

foreach ($statnodes as $stat) 
{
   ${$header}[] = $stat->nodevalue;
}
于 2013-02-21T03:54:38.357 に答える