我试图解析HTML片段,使用PHP DOM函数。除了段落,跨度和换行符标签之外,我已经除去了所有内容,现在我想要检索所有文本及其伴随的样式。如何在HTML代码片段中找到文本节点?
所以,我想获得每一段文字,一个接一个,并为每一个我可以再回去了树得到特定属性的值(我只对一些特定的兴趣,像颜色等)。
我该怎么做?或者我是以错误的方式思考它?
谢谢!
我试图解析HTML片段,使用PHP DOM函数。除了段落,跨度和换行符标签之外,我已经除去了所有内容,现在我想要检索所有文本及其伴随的样式。如何在HTML代码片段中找到文本节点?
所以,我想获得每一段文字,一个接一个,并为每一个我可以再回去了树得到特定属性的值(我只对一些特定的兴趣,像颜色等)。
我该怎么做?或者我是以错误的方式思考它?
谢谢!
假设你有一个DOMDocument这里:
$doc = new DOMDocument();
$doc->loadHTMLFile('http://stackoverflow.com/');
您可以采用一个简单的XPath所有文本节点。
$xpath = new DOMXpath($doc);
$textNodes = $xpath->query('//text()');
只是foreach
在它遍历所有textnodes:
foreach ($textNodes as $textNode) {
echo $textNode->data . "\n";
}
从这一点,你可以通过使用->parentNode
上去DOM树。
希望这可以给你一个良好的开端。
对于那些谁更舒服CSS3选择,并愿意包括一个额外的PHP类到他们的项目,我会建议使用Simple PHP DOM parser。该解决方案看起来如下所示:
$html = file_get_html('http://www.example.com/');
$ret = $html->find('p, span');
$store = array();
foreach($ret as $element) {
$store[] = array($element->tag => array('text' => $element->innertext,
'color' => $element->color,
'style' => $element->style));
}
print_r($store);
代码可以是任何东西(当然,在合理范围内)。它来自TinyMCE,然后除了跨度和段落之外,我将其中的所有内容都剥离出来。 – Sharon 2011-01-24 13:04:17
请出示* PHP DOM代码*您使用的是从TinyMCE的* – Gordon 2011-01-24 13:06:29
未来目前,我没有做任何事情的*输入 - 还没有得到那么远呢!我试图找出从哪里开始! – Sharon 2011-01-24 14:08:26