Php 如何在不丢失标记的情况下刮取网页数据

Php 如何在不丢失标记的情况下刮取网页数据,php,dom,serialization,innerhtml,Php,Dom,Serialization,Innerhtml,我正在尝试使用php和dom xpath获取web数据。当我将$node->nodeValue存储到数据库中时,或者即使我尝试回显它,像和这样的所有标记都会丢失。所以我把所有的段落连接起来。如何解决此问题如果您正在浏览DOM,很可能已经没有可查看的标记了。标记现在是DOM中的节点——标记中包含的原始内容是您以“字符串形式”访问的全部内容。当然,您可以使用节点信息来重建标记,但它们不是原始标记(例如,您必须选择或——您将不知道站点最初拥有哪个标记)。如果您想从get-go中获得原始标记,那么获取您

我正在尝试使用php和dom xpath获取web数据。当我将$node->nodeValue存储到数据库中时,或者即使我尝试回显它,像

这样的所有标记都会丢失。所以我把所有的段落连接起来。如何解决此问题

如果您正在浏览DOM,很可能已经没有可查看的标记了。标记现在是DOM中的节点——标记中包含的原始内容是您以“字符串形式”访问的全部内容。当然,您可以使用节点信息来重建标记,但它们不是原始标记(例如,您必须选择


——您将不知道站点最初拥有哪个标记)。如果您想从get-go中获得原始标记,那么获取您所做的get/POST返回的原始字节流;不要将其解析为DOM树

如果您正在浏览DOM,则很可能不再有可查看的标记。标记现在是DOM中的节点——标记中包含的原始内容是您以“字符串形式”访问的全部内容。当然,您可以使用节点信息来重建标记,但它们不是原始标记(例如,您必须选择


——您将不知道站点最初拥有哪个标记)。如果您想从get-go中获得原始标记,那么获取您所做的get/POST返回的原始字节流;不要将其解析为DOM树

如果您有一个节点,并且需要其所有内容,则可以使用此功能:

function innerHTML(DOMNode $node)
{
  $doc = new DOMDocument();
  foreach ($node->childNodes as $child) {
    $doc->appendChild($doc->importNode($child, true));
  }
  return $doc->saveHTML();
}

如果您有一个节点,并且需要其所有内容,则可以使用此功能:

function innerHTML(DOMNode $node)
{
  $doc = new DOMDocument();
  foreach ($node->childNodes as $child) {
    $doc->appendChild($doc->importNode($child, true));
  }
  return $doc->saveHTML();
}

2个多小时的搜索,这是扭转潮流的帖子。2个多小时的搜索,这是扭转潮流的帖子。