我已经运行了以下代码,但它仍然看到一个外部网页上的链接,该链接不在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>
答案 0 :(得分:1)
这是因为DOM会“正确”地重写 HTML。如果您执行saveHTML
,则会看到a
标记现在位于body
标记中。我认为没有办法改变这种行为。
旁注:
使用此:
libxml_use_internal_errors(true);
$dom->loadHTML($data);
而不是:
@$dom->loadHTML($data);
它更干净。