3

我得到了一个 DOMDocument,它看起来像这样:

<font size="6" face="Arial">
CONTENT
    <font size="5" face="Arial">...</font>
    <br>
    <table cellspacing="1" cellpadding="1" border="3" bgcolor="#E7E7E7" rules="all">...</table>
    <table cellspacing="1" cellpadding="1">...</table>
    <font size="3" face="Arial" color="#000000">...</font>
</font>

现在我只想获得 CONTENT 而不是所有其他子元素。

我怎样才能做到这一点?

4

2 回答 2

3

您可以做的是获取第一个标签DOMText的子节点的第一个节点。<font>

// Get the first <font> tag
$font = $doc->getElementsByTagName( 'font')->item(0);

// Find the first DOMText element
$first_text = null;
foreach( $font->childNodes as $child) {
    if( $child->nodeType === XML_TEXT_NODE) {
        $first_text = $child; 
        break;
    }
}

if( $first_text != null) {
    echo 'OUTPUT: ' . $first_text->textContent;
}

您可以从演示中看到这打印:

OUTPUT: CONTENT
于 2012-09-27T16:42:13.083 回答
2

更短:

$output = $xml->getElementsByTagName("font")->item(1)firstChild->textContent;

nickb 的解决方案也有效,如果内容出现在其中一个子孩子之后,效果会更好。但由于在我的情况下它没有这样做,所以这个更短。

于 2012-09-27T17:30:18.460 回答