gpt4 book ai didi

php - HTML DOMNodelist?

转载 作者:行者123 更新时间:2023-12-04 18:19:09 26 4
gpt4 key购买 nike

很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .




10年前关闭。




我尝试将以下代码用于 HTML 页面,但它不起作用。如何在一页中检索和操作所有输出的 HTML 元素?

$doc = new DOMDocument;
$doc->load('http://localhost/foo/index.php');

$items = $doc->getElementsByTagName('img');

foreach ($items as $item) {
echo $item->nodeValue . "\n";
}

编辑:
$dom = new DOMDocument;
$html = 'http://localhost/foo/index.php';
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
echo $dom->saveHtml($node), PHP_EOL;

}

上面的代码什么也不输出

调试代码:
<?php

$dom = new DOMDocument;
$html = 'http://localhost/foo/index.php';

var_dump($dom->loadHTML($html));

echo '<br />';

var_dump($dom);

echo '<br />';

var_dump($dom->saveHTML());

echo '<br />';

var_dump($dom->getElementsByTagName('a'));

echo '<br />';

foreach ($dom->getElementsByTagName('a') as $node) {

var_dump($node);

echo '<br />';

var_dump( $dom->saveHtml($node) );
echo '<br />';

}

?>

调试结果:
bool(true)
object(DOMDocument)#1 (0) { }
string(170) "

http://localhost/foo/index.php
"
object(DOMNodeList)#2 (0) { }

最佳答案

一些 DOMDocument调试提示。

If applicable upgrade to the latest PHP 5.4 because it will give you more information on var_dump for DOMDocument and friends.



我以您的小示例为例,并将添加一些提示如何调试代码:
$dom = new DOMDocument;
$html = 'http://localhost/foo/index.php';
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('a') as $node) {
echo $dom->saveHtml($node), PHP_EOL;
}

加载是否有效?就是这一行:
$dom->loadHTML($html);

您可以通过输出文档的内容来查看文档内部。如果您在浏览器中显示它,您需要查看文档的源代码,或者您只需使用 htmlspecialchars 更改输出即可。 :
var_dump(htmlspecialchars($dom->saveHTML()));

这将为您提供在浏览器中逐字加载在 HTML 变体中的文档。

您可能要调试的下一部分是 getElementsByTagName 的结果。 :
foreach ($dom->getElementsByTagName('a') as $node) {

先赋值给一个变量,然后检查 length如果不是 NULLFALSE :
$aTags = $dom->getElementsByTagName('a');
var_dump(htmlspecialchars($aTags), $aTags->length());

长度将告诉您匹配了多少元素。

示例/ Demo :
<?php

$dom = new DOMDocument;
$html = 'http://localhost/foo/index.php';
$dom->loadHTML($html);
echo 'Document HTML loaded: ', var_dump($dom->saveHTML()), "\n";
$aTags = $dom->getElementsByTagName('a');
echo 'A Elements found: ', var_dump($aTags->length), "\n";
foreach ($aTags as $node) {
echo $dom->saveHtml($node), "\n";
}

输出:
Document HTML loaded: string(171) "<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>http://localhost/foo/index.php</p></body></html>
"

A Elements found: int(0)

希望这会有所帮助。

关于php - HTML DOMNodelist?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11062380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com