簡體   English   中英

PHP DOMDocument-將節點的子節點保存為字符串-不包括父節點

[英]PHP DOMDocument - save children of a node to string - excluding the parent node

我正在將HTML片段加載到DOMDocument中,對其進行修改,然后再轉換回字符串。

我能得到的最接近的是這個...

$html_string = "<b>my html fragment</b><div>more child nodes</div>";
$doc_html = new DOMDocument();
$doc_html->loadHTML( $html_string );
//do stuff
$html_string = $doc_html->saveHTML( $doc_html->getElementsByTagName('body')->item(0) );

這里的問題是loadHTML將其包裝在<html><body>標記中。 所以我使用getElementsByTagName僅對主體節點進行字符串化,但是它包括主體節點本身。

<body><b>my html fragment</b><div>more child nodes</div></body>

但是我只希望子節點喜歡輸入字符串。

除了循環所有子級並連接字符串/在結果字符串上運行req ex之外,還有一種簡單的方法嗎?

<?php
$doc = doc();
$xp = new DOMXpath($doc);
$nl = $xp->query('//a');
foreach($nl as $n) {
    $df = $doc->createDocumentFragment();
    $nodes = array();
    foreach( $n->childNodes as $cn ) {
        $nodes[] = $cn;
    }
    foreach($nodes as $cn) {
        $df->appendChild(   $cn );
    }
    echo $doc->savexml( $df );
}


function doc() {
    $doc = new DOMDocument;
    $doc->loadxml(<<< eox
<doc>
    <a>
        <b>1</b>
        <b>2</b>
        <b>3</b>
        <b>4</b>
    </a>
</doc>
eox
    );
    return $doc;
}

版畫

    <b>1</b>
    <b>2</b>
    <b>3</b>
    <b>4</b>

參見http://docs.php.net/domdocumentfragment

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM