Требуется помощь DOMXPath

Я делаю код, который ищет конкретное имя документа (пример: SZ-1000) и собираю все ссылки, что div class="box" содержит. (index.php) Название документа может содержать один или два документа с идентификатором. (26904, 26905) Это работает как шарм. Я вернул удостоверения.

Но я хочу перечислить все вложения, которые ссылки содержат в виде ссылок.
Трюк сейчас, нет div элемент, только table или же dd чтобы определить места вложения.

  • сайт>
    • название документа (SZ-1000)>
      • ID документа (ов)>
        • ссылка на вложения

Я думаю, что-то не так с этим разделом:

$xpath->query('//table[@id="content clear-block"]');

Catchable fatal error: Object of class DOMNodeList could not be converted to string in C:\AppServ\www\test\import.php on line 35

Результат var_dump($articles) в import.php;

object(DOMNodeList)#3 (0) { }
object(DOMNodeList)#3 (0) { }

Мой код:

index.php

$site = 'http://192.168.0.1:81/?q=search/node/SZ-1000';
$html = file_get_contents($site);
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$articles = $xpath->query('//div[@class="box"]');

$links = array();
foreach($articles as $container) {
$arr = $container->getElementsByTagName("a");
foreach($arr as $item) {
$href =  $item->getAttribute("href");
$links[] = $href;
}
}
foreach($links as $link){
$text = end(split('/',$value));
echo $text."<br>";
$wr_out = file_get_contents("http://127.0.0.1/test/import.php?value=".$text);
echo $wr_out;
}

import.php

$value = $_GET['value'];
$site = 'http://192.168.0.1:81/?q=node/'.$value;
$html = file_get_contents($site);
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$articles = $xpath->query('//table[@id="content clear-block"]');

$links = array();
foreach($articles as $container) {
$arr = $container->getElementsByTagName("a");
foreach($arr as $item) {
$href =  $item->getAttribute("href");
$links[] = $href;
echo $href;
}
}

Спасибо за ваш ответ!

Редактировать:

«Исправляемая фатальная ошибка: объект класса DOMNodeList не может быть
преобразуется в строку в C: \ AppServ \ www \ test \ import.php в строке 35 ‘

исправлена ​​ошибка:

echo $ wr_out-> tagName;

0

Решение

Окей, наконец-то я это сделал. Вот решение для пожилых людей.
С кодировкой UTF-8.

index.php

    <?php

// получить некоторые переменные из внешнего источника | я использую это с таблицей Google

    $get = $_GET['get'];
$site = 'http://192.168.0.1:81/?q=search/node/'.$get;
$html = file_get_contents($site);

//libxml_use_internal_errors(true);

$doc = new DOMDocument();
$doc->loadHTML($html);

$xpath = new DOMXpath($doc);
$articles = $xpath->query('//div[@class="box"]');

if(!empty($articles)){

$links = array();
foreach($articles as $container) {
$arr = $container->getElementsByTagName("a");
foreach($arr as $item) {
$href =  $item->getAttribute("href");
$links[] = $href;
}
}
$wr_out = "";

foreach($links as $value){
$text = end(split('/',$value));
$wr_out.=file_get_contents("http://127.0.0.1/projekt/search/import.php?value=".$text);

}

if(empty($wr_out))
echo "There is no document with that ID";
else
echo $wr_out;
}
else
echo "There is no document with that ID";
?>

import.php

    $value = $_GET['value'];
$site = 'http://192.168.0.1:81/?q=node/'.$value;
$html = file_get_contents($site);//libxml_use_internal_errors(true);

$doc = new DOMDocument();
$doc->loadHTML($html);$elements = $doc->getElementsByTagName('tbody');
$table = $elements->item(0);

$rows = $table->childNodes;

foreach ($rows as $node) {

if($node->tagName == "tr"){

$a = $node->firstChild->firstChild;

foreach ($a->attributes as $attr) {
if($attr->nodeName == "href"){
$value = $attr->nodeValue;
?>
<!doctype html>
<head>
<title>Search</title>
<meta charset="UTF-8">
</head>
<body>
<table align="center">

<tr>
<td></td>
<td class="style-1">
<br><h3>
<?=$value?> | <a href='<?=$value?>'>LINK</a></h3><hr>
</td>
</tr>
</table>
</body><?

}
}
}
}?>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]