[英]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<>\'"" 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.