1

現在の PHP:

    $dom = new DOMDocument();
    $dom->loadHTML($htmlsrc);

    $xpath = new DOMXPath($dom);

    $tags = $xpath->query('//div/map/area');
    foreach ($tags as $tag) {
        var_dump(trim($tag->nodeValue));
    }

これは明らかに正しくありません。これらのいくつか(約8千)を持つファイルのfile_get_contentsを保持する変数があります:

<area shape="poly" alt="" coords="500,327,464,349,467,385,478,400,492,394,500,356" href="1880314600" title="" />

$coords と $href を収集しようとしているので、これらをファイルではなくデータベースに入れることができますが、xpath の使用方法がわかりません。申し訳ありませんが、「何を試しましたか?」に対する正しい答えがありません。私はたくさんのものを試しましたが、これを理解することはできません(または正規表現)。

EDIT コメントについて:

$xpath = new DOMXPath($dom);
    var_dump($xpath);
    $tags = $xpath->query('//div/map/area');
    foreach ($tags as $tag) {
        var_dump($tag->getAttribute('coords'));
    }

最初の var_dump() は次を示しています: (大量にあるため編集されています)

object(DOMXPath)#2985 (1) { ["document"]=> string(22) "(object value omitted)" } string(47) "500,327,464,349,467,385,478,400,492,394,500,356" string(47) "559,310,530,314,532,394,543,389,561,367,561,351" string(63) "613,369,586,343,575,343,575,369,584,394,618,402,638,398,629,371" string(47) "523,431,501,438,498,451,537,468,550,464,550,447" string(39) "525,464,510,460,507,466,518,471,523,469"

ただし、2 番目の var_dump は何も返しません。最初の xpath ダンプに座標しか表示されないのはなぜですか? さらに、その時点でクエリを入力することさえしていません...

4

1 に答える 1

1

座標 (またはその他の属性) を取得するには、次のようにします

var_dump($tag->getAttribute('coords'));

属性も取得したい場合は、次のようにhref簡単に実行できます。

var_dump([
    'coords' => $tag->getAttribute('coords'),
    'href'   => $tag->getAttribute('href'),
]);
于 2013-03-11T16:19:37.100 に答える