php-get-html,php - How to get innerHTML of DOMNode? - Stack Overflow

Here's another approach based on this comment by Drupella on php.net, that worked well for my project. It defines the innerHTML() by creating a new DOMDocument, importing and appending to it the target node, instead of explicitly iterating over child nodes.

InnerHTML

Let's define this helper function:

function innerHTML( \DOMNode $n, $include_target_tag = true ) {

$doc = new \DOMDocument();

$doc->appendChild( $doc->importNode( $n, true ) );

$html = trim( $doc->saveHTML() );

if ( $include_target_tag ) {

return $html;

}

return preg_replace( '@^nodeName .'[^>]*>|'. $n->nodeName .'>$@', '', $html );

}

where we can include/exclude the outer target tag through the second input argument.

Usage Example

Here we extract the inner HTML for a target tag given by the "first" id attribute:

$html = '

Hello

World!

';

$doc = new \DOMDocument();

$doc->loadHTML( $html );

$node = $doc->getElementById( 'first' );

if ( $node instanceof \DOMNode ) {

echo innerHTML( $node, true );

// Output:

Hello

echo innerHTML( $node, false );

// Output:

Hello

}

Live example:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值