2011-10-22 143 views
2

我有格式化像这样的HTML文件:PHP的Xpath获得的innerHTML与innerHTML的标签

<p class="p1">subject</p> 
<p class="p2">detail <span>important</span></p> 

<p class="p1">subject</p> 
<p class="p2">detail<span>important</span></p> 

我写了一个PHP代码来自动获取每个P1,它是将它们插入到我的MySQL表详细信息。

这是我的代码:

$doc = new DOMDocument(); 

$doc->loadHTMLFile("file.html"); 

$xpath = new DomXpath($doc); 

$subject = $xpath->query('//p'); 


for ($i = 0 ; $i < $subject->length-1 ; $i ++) { 

if ($subject->item($i)->getAttribute("class") == "p1") 
    echo $subject->item($i)->nodeValue; 
} 
... 

这不是我完整的代码,但问题是:

echo $subject->item($i)->nodeValue; 

这给了我<p>detail important</p>,没有<span></span>标签。

围绕细节的“重要”部分设置span标签非常重要。有什么功能可以做到这一点,而不会感到头痛?

在此先感谢

+0

可能重复的HTTP ://stackoverflow.com/questions/3615389/innerhtml-in-xpath) – hakre

+0

我发现这个SO条目,我希望将帮助:http://stackoverflow.com/questions/6286362/php-dom-get-nodevalue-html -without剥标签s – SGB

回答

0

每当我需要解析HTML,我通过SimpleHTMLDOM运行:

http://simplehtmldom.sourceforge.net/

我建议使用1.11版。由于各种原因,1.5相当破碎。

+1

SimpleHTMLDOM由于设计而存在缺陷,因此我不会推荐它,而是基于DomDocument的东西,请参阅以下内容:http://stackoverflow.com/questions/3606792/best-way-to-parse-an-invalid- html-in-php – hakre

+0

感谢您的回复,请检查一下。 – user1008735

+0

这里同样的问题。 – user1008735

1

我找到了答案,我的问题:)感谢SimpleHTMLDOM

​​

}

的伎俩是:

html_entity_decode($element); 
的[?innerHTML的XPath中(