Php 如何使用DOMDocument将元素插入新元素

Php 如何使用DOMDocument将元素插入新元素,php,domdocument,Php,Domdocument,基本上,我正在尝试用css类创建一个div,在其中放入一些元素,然后用我的新div替换相同的HTML。我尝试了许多不同的方法,但最近的一种方法失败了 $dom = new DOMDocument( '1.0', strtolower( get_bloginfo( 'charset' ) ) ); @$dom->loadHTML( '<div>' . $content . '</div>' ); $dom->formatOutput = true; forea

基本上,我正在尝试用css类创建一个div,在其中放入一些元素,然后用我的新div替换相同的HTML。我尝试了许多不同的方法,但最近的一种方法失败了

$dom = new DOMDocument( '1.0', strtolower( get_bloginfo( 'charset' ) ) );
@$dom->loadHTML( '<div>' . $content . '</div>' );
$dom->formatOutput = true;

foreach( $dom->getElementsByTagName( 'img' ) as $image ) {
    $copy_node = null;

    if( $image->parentNode->tagName == 'a' )
        $copy_node = $image->parentNode;

    if( !is_null( $copy_node ) && $copy_node->parentNode->tagName == 'p' )
        $copy_node = $copy_node->parentNode;

    if( is_null( $copy_node ) )
        $copy_node = $image;

    $wrap = $dom->createElement( 'div' );
    $wrap->setAttribute( 'class', 'some-css-class' );

    // Insert $copy_node into it - doesn't work
    $wrap->appendChild( $copy_node );

    // Replace the node with the new one
    $copy_node->parentNode->replaceChild( $wrap, $copy_node );

}
$dom=newdomdocument('1.0',strtolower(get_bloginfo('charset'));
@$dom->loadHTML('.$content'.');
$dom->formatOutput=true;
foreach($dom->getElementsByTagName('img')作为$image){
$copy_node=null;
如果($image->parentNode->tagName=='a')
$copy_node=$image->parentNode;
如果(!is_null($copy_node)&&&$copy_node->parentNode->tagName='p')
$copy\u node=$copy\u node->parentNode;
if(为空($copy_node))
$copy_node=$image;
$wrap=$dom->createElement('div');
$wrap->setAttribute('class','somecss class');
//将$copy\u节点插入其中-不起作用
$wrap->appendChild($copy_节点);
//用新节点替换该节点
$copy\u node->parentNode->replaceChild($wrap,$copy\u node);
}

有人能解释一下如何将一些元素插入到新创建的元素中,以便我可以用文档中的新元素替换一些元素吗?

更改操作顺序:

  • 先替换
  • 附加第二
否则,您试图将
$wrap
$copy\u节点
子元素替换为
$wrap
,这毫无意义


通过先进行替换,将包装元素插入待包装元素所在的位置。这将使待包装元素成为文档的一部分,但不再位于树中。要在树中给它一个位置,只需将其附加到包装元素。

代码的其余部分在哪里?
$copy\u node
来自何处?在何处定义了$copy\u node?有点像你试图在树中创建一个循环,这是被禁止的。更新了我的代码以显示更多简单但不明显的内容。很乐意帮忙。:)