DOMdocument и проблема с массивом Xpath - PullRequest
0 голосов
/ 06 ноября 2018

У меня проблемы с файлом file_get_contents и DOMdocument, а также с Xpath.

Я пытаюсь кое-что почистить. Поэтому я сделал массив ссылок на сайты.

array(9) {
  [0]=>
  string(34) "https://lions-mansion.jp/MF081014/"
  [1]=>
  string(34) "https://lions-mansion.jp/MF161026/"
  [2]=>
  string(34) "https://lions-mansion.jp/MF171045/"
  [3]=>
  string(34) "https://lions-mansion.jp/MF161016/"
  [4]=>
  string(34) "https://lions-mansion.jp/MF171010/"    
}

Попытка зайти внутрь этих ссылок с помощью foreach. И попробуй почистить ссылку rel href!

foreach ($siteUrls as $sites){
        @$html [] = file_get_contents($sites);
}



foreach ($html as $geturl)
{
    $grabber = new \DOMXPath($geturl);
    $mainLink [] = $grabber->query("//link[@rel='canonical']/@href");

}
    var_dump($mainLink);

Но в конце концов столкнулся с этой ошибкой.

Аргумент 1, передаваемый в DOMXPath :: __ construct (), должен быть экземпляром DOMDocument, заданная строка

Есть идеи, как решить эту проблему? Как я могу получить это link rel url? из головы тег

1 Ответ

0 голосов
/ 06 ноября 2018

libxml_use_internal_errors: отключить ошибки libxml и позволить пользователю получать информацию об ошибках при необходимости http://php.net/manual/en/function.libxml-use-internal-errors.php

<?php

$siteUrls = [
    "https://lions-mansion.jp/MF081014/",
    "https://lions-mansion.jp/MF161026/",
    "https://lions-mansion.jp/MF171045/",
    "https://lions-mansion.jp/MF161016/",
    "https://lions-mansion.jp/MF161016/"
];

foreach ($siteUrls as $sites){
    @$html [] = file_get_contents($sites);
}


libxml_use_internal_errors(true);

foreach ($html as $geturl)
{
    $dom = new DOMDocument();
    $dom->loadHTML($geturl);
    $grabber = new DOMXPath($dom);
    $names = $grabber->query("//link[@rel='canonical']/@href");
    foreach($names as $contextNode) {
        $mainLink[] = $contextNode->value;
    }
}
libxml_clear_errors();
var_dump($mainLink);


array (size=2)
  0 => string 'https://lions-mansion.jp/MF161026/' (length=34)
  1 => string 'https://lions-mansion.jp/MF171045/' (length=34)
...