Php loadHTML/saveHTMLDOM问题
运行以下代码后,我得到“不匹配”:Php loadHTML/saveHTMLDOM问题,php,html,dom,xpath,Php,Html,Dom,Xpath,运行以下代码后,我得到“不匹配”: 您将在上面看到HTML是如何被改变的。要查看HTML,请使用DOMDocument::saveHTML()(或saveXML())。 希望它能帮助您看起来问题的根源是DOMXPath,因为当我有这个代码时 <?php header("Content-Type: text/html; charset=utf-8"); $testcontent = '<div><p>Reader’s Digest
您将在上面看到HTML是如何被改变的。要查看HTML,请使用
DOMDocument::saveHTML()(或saveXML())。
希望它能帮助您看起来问题的根源是
DOMXPath
,因为当我有这个代码时
<?php
header("Content-Type: text/html; charset=utf-8");
$testcontent = '<div><p>Reader’s Digest & More!</p></div>';
$dom = new DOMDocument();
$dom->loadHTML($testcontent);
echo $dom->saveHTML(); //prints the correct html
$xpath = new DOMXPath($dom);
$testcon = $xpath->query('*');
echo $testcontent;
foreach ($testcon->item(0)->childNodes as $child) {
echo "CHILD : " . $child->textContext; //prints the wrong html
$savehtml = $dom->saveHTML($child);
}
echo $savehtml . '<br />';
if ($testcontent == $savehtml) {
echo "Match";
} else {
echo "No Match";
}
?>
它打印
CHILD:读者文摘&;更多
我将使用LIBXML常量和html编码/解码函数将文本转换为标准格式,然后再将其交给DOMDocument(使用LIBXML)。DOMDocument
解析给定字符串,并将其转换为完整的DOM树,其中包含
标记。原始字符串没有这些标记,因此这两个字符串将不匹配。也许关于如何获取相同的DOM片段,为什么不查看页面源代码呢;我在上面的问题中添加了页面来源。您将看到两个echo语句的输出。
<div><p>Reader’s Digest & More!</p></div>
<div><p>Reader’s Digest & More!</p></div>
No Match
<?php
header("Content-Type: text/html; charset=utf-8");
$testcontent = '<div><p>Reader’s Digest & More!</p></div>';
$dom = new DOMDocument();
$dom->loadHTML($testcontent);
echo $dom->saveHTML(); //prints the correct html
$xpath = new DOMXPath($dom);
$testcon = $xpath->query('*');
echo $testcontent;
foreach ($testcon->item(0)->childNodes as $child) {
echo "CHILD : " . $child->textContext; //prints the wrong html
$savehtml = $dom->saveHTML($child);
}
echo $savehtml . '<br />';
if ($testcontent == $savehtml) {
echo "Match";
} else {
echo "No Match";
}
?>