2012-09-27 45 views
1

元素的PHP的DOMDocument值我有一个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> 

现在我想要得到的只是内容,而不是所有的其他子元素。

我该怎么做?

+0

IIRC,在有效的HTML中,您不能在''内嵌套'

'。 – nickb

+0

你如何获得Domdocument ???试图在服务器端或客户端获得结果... – Surace

+0

可能是,代码是由第三方程序生成的,我得解析它。 – Zulakis

回答

0

短:

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

nickb的解决方案工作过,是即使内容来更好子之一后,孩子的。但是由于在我的情况下它不这样做,所以这个更短。

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; 
} 

您可以从the demo看到这个打印:

OUTPUT: CONTENT