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>

ここで、他のすべての子要素ではなく、コンテンツのみを取得したいと思います。

どうやってやるの?

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のソリューションも機能し、コンテンツがサブチャイルドの1つの後に来る場合はさらに優れています。しかし、私の場合はそうしないので、これは短いです。

于 2012-09-27T17:30:18.460 に答える