помогите с функцией php DOM - PullRequest
       0

помогите с функцией php DOM

0 голосов
/ 23 декабря 2010

у меня работает следующий код, но он все еще видит ссылку на веб-странице exteranl, которая не находится внутри тега 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 Ответ

1 голос
/ 23 декабря 2010

Это потому, что DOM перепишет HTML "правильно". Если вы выполните saveHTML, вы увидите, что тег a теперь находится в теге body. Я не думаю, что есть способ изменить это поведение.

Примечание:

Используйте это:

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

Вместо:

@$dom->loadHTML($data);

Это чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...