繁体   English   中英

DOMElement::innerHTML 的原始内容

[英]Raw content of DOMElement::innerHTML

在 PHP 中,我如何获取DOMElement的原始内容,就像 JS innerHTML那样?

我尝试使用saveHTML()saveXML()迭代每个childNodes来模拟innerHTML ,但它替换了代码,例如将<br />变成<br><br/> (在 XML 版本的情况下)。

这可以通过一种笨拙但可靠的方式来实现。 通过将节点传递给其父文档的saveHTML()方法,PHP 具有与outerHTML等效的功能。 由于此输出格式良好且已转义,因此您可以轻松地从文本中innerHTTML单个外部标记,留下所需的innerHTTML

示例:

$dom = new DOMDocument;
$dom->loadHTML('<div><p with="scary<>\'&quot;" attrs=40 ok>Hello <em>World</em></div>');
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//p') as $p) {
    $innerHTML = preg_replace('@^<([^>\\s]+)[^>]*>(.*)</\\1>$@s', '$2', $dom->saveHTML($p));
    var_dump($p);
}

正则表达式演示: https : //regex101.com/r/yEVMQx/2

请注意,正则表达式上的s标志至关重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM