如何在php中访问DOM,以便在<;html></html>;

如何在php中访问DOM,以便在<;html></html>;,php,dom,html-parsing,Php,Dom,Html Parsing,可能重复: 我知道如何根据id访问不同的元素,但不知道如何获取html开始标记到html结束标记之间的所有内容。谁能帮帮我吗。 谢谢 如果您想用PHP解析html页面,可以使用PHP的DOMDocument扩展,如下所示: // a new dom object $dom = new domDocument; // load the html into the object $dom->loadHTML($html); // keep white space $dom->prese

可能重复:

我知道如何根据id访问不同的元素,但不知道如何获取html开始标记到html结束标记之间的所有内容。谁能帮帮我吗。
谢谢

如果您想用PHP解析html页面,可以使用PHP的DOMDocument扩展,如下所示:

// a new dom object
$dom = new domDocument;
// load the html into the object
$dom->loadHTML($html);
// keep white space
$dom->preserveWhiteSpace = true;
// nicely format output
$dom ->formatOutput   = true;
//get element by tag name
$htmlRootElement = $dom->getElementsByTagName('html');
echo htmlspecialchars($dom->saveHTML(), ENT_QUOTES);
或者,您也可以在客户端使用JavaScript执行此操作:

var htmlRootElement = document.getElementsByTagName("html");
alert(htmlRootElement.innerHTML);

您可以使用DOMDocument类访问
标记中的每个元素

范例

$htmlDoc=新文档;
$html=item(0)->childNodes作为$element){
echo“Element name:”.$Element->nodeName.PHP\u EOL;
echo“Element value:”.$Element->nodeValue.PHP\u EOL;
}

您的问题不清楚。您的输入和期望的输出是什么?您只是想将DOMDocument序列化为字符串吗?例如,输入为www.hello.php。这个网址。这将返回包括img、div、pSo等标记在内的所有内容。您有一个html字符串或url,并且希望将
html
的子项作为字符串、DOM对象或其他对象返回吗?(您意识到有可能存在没有
html
元素的有效html吗?)我知道您的意思。我会给你一个我真正想要的例子。这是可访问性检查器站点的地址。代客泊车.webthing.com/page。。。。。。。如果你只是添加www.drumstudio.ie。。。您将看到它生成了“drumstudio”页面中编写的所有代码。我正试着做同样的事情。希望能说得更清楚一点。谢谢,我刚刚试过你的代码。我把所有东西都放在标签之间了。我的意思是,如果有hello DOM,那么我就得到了“hello DOM”。但是如果我想得到包括h1标签在内的整行内容呢。所有的div和img标签都是如此。如果你知道我的意思。谢谢,我明白了。你能试着用这个echo DOMinnerHTML($htmlRootElement)替换最后一行吗。我已经更新了答案。或者这一个echo$dom->saveHTML();我替换了这一行,echo($htmlRootElement->item(0)->nodeValue);有了这一行,echo-DOMinnerHTML($htmlRootElement);这给了我一个错误。调用未定义函数DOMinnerHTML()不,它给了我一个错误,调用未定义函数DOMinnerHTML()我的错,请尝试另一个-echo$dom->saveHTML();我试过这样的方法,但还是出错了。致命错误:无法使用DOMNodeList类型的对象作为数组$htmlDoc=new DOMDocument$htmlDoc->loadHTML(“;$htmlElement=$htmlDoc->getElementsByTagName(“html”);foreach($htmlElement[0]->childNodes as$element){echo'元素名称:'.$element->nodeName.PHP_EOL;echo'元素值:'.$element->nodeValue.PHP_EOL;}哎哟,忘记使用
item()
方法访问第一个元素(只有一个).我知道你已经接受了另一个答案,但我想我会解决这个问题;)
$htmlDoc = new DOMDocument;

$html = <<<HTML
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>My Site</title>
    <meta name="description" content="DOM test">
</head>
<body>
    <h1>Hello</h1>
    <p>This is a DOM test</p>
</body>
</html>
HTML;

$htmlDoc->loadHTML($html);
$htmlElement = $htmlDoc->getElementsByTagName("html");

foreach ($htmlElement->item(0)->childNodes as $element) {
    echo 'Element name: ' . $element->nodeName . PHP_EOL;
    echo 'Element value: '. $element->nodeValue . PHP_EOL;
}