帮助php DOM功能

时间:2010-12-22 21:42:53

标签: php dom

我已经运行了以下代码,但它仍然看到一个外部网页上的链接,该链接不在body标签内有效...不确定是什么错误......

$dom = new DOMDocument();
     @$dom->loadHTML($get_webpage);
   @$dom->getElementsByTagName('body');
      $x = new DOMXPath($dom);

     foreach($x->query("//a") as $node)
       {
            if ($node->getAttribute("href") == "http://www.mysite.com/" && $node->getAttribute("rel") == "" && $node->textContent == "mysite")
                    {
              // echo 'valid link on site';
            }

       }

外部网页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<a href="http://www.mysite.com/"><strong>mysite<strong></a>
<body>
text text
</body>
</html>

1 个答案:

答案 0 :(得分:1)

这是因为DOM会“正确”地重写 HTML。如果您执行saveHTML,则会看到a标记现在位于body标记中。我认为没有办法改变这种行为。

旁注:

使用此:

libxml_use_internal_errors(true);
$dom->loadHTML($data);

而不是:

@$dom->loadHTML($data);

它更干净。