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));
    }

这显然是不正确的。我有一个变量,其中包含一个文件的 file_get_contents,其中有几个(大约 8000 个):

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

我正在尝试收集 $coords 和 $href 以便我可以将它们放入数据库而不是文件中,但我无法理解如何使用 xpath。抱歉,对于“您尝试过什么?”,我没有正确答案。我已经尝试了很多东西,我根本无法理解这一点(或正则表达式)。

编辑 对于评论:

$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"

但是,第二个 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 回答