Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在HTML代码段中找到文本节点?_Php_Dom - Fatal编程技术网

Php 如何在HTML代码段中找到文本节点?

Php 如何在HTML代码段中找到文本节点?,php,dom,Php,Dom,我正在尝试使用PHPDOM函数解析一个HTML片段。除了段落、跨度和换行标记之外,我已经去掉了所有内容,现在我想检索所有文本及其附带的样式 因此,我想一个接一个地获取每一段文本,然后对于每一段文本,我可以返回树以获取特定属性的值(我只对某些特定属性感兴趣,比如颜色等) 我该怎么做?还是我想的不对?假设您在这里有一个DOM文档: $doc = new DOMDocument(); $doc->loadHTMLFile('http://stackoverflow.com/'); 可以使用简单

我正在尝试使用PHPDOM函数解析一个HTML片段。除了段落、跨度和换行标记之外,我已经去掉了所有内容,现在我想检索所有文本及其附带的样式

因此,我想一个接一个地获取每一段文本,然后对于每一段文本,我可以返回树以获取特定属性的值(我只对某些特定属性感兴趣,比如颜色等)


我该怎么做?还是我想的不对?

假设您在这里有一个DOM文档:

$doc = new DOMDocument();
$doc->loadHTMLFile('http://stackoverflow.com/');
可以使用简单的Xpath查找所有文本节点

$xpath = new DOMXpath($doc);
$textNodes = $xpath->query('//text()');
只需对其进行
foreach
即可迭代所有文本节点:

foreach ($textNodes as $textNode) {
    echo $textNode->data . "\n";
}
由此,您可以使用
->parentNode
向上访问DOM树


希望这能给你一个好的开始。

对于那些更熟悉CSS3选择器,并且愿意在项目中包含一个额外的PHP类的人,我建议使用。解决方案如下所示:

$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,然后我剥离了除了跨距和段落之外的所有内容。请显示您在TinyMCE输入上使用的PHP DOM代码。目前我什么都没做-还没做!我在想从哪里开始!建议的第三方替代方案实际使用而不是字符串解析:,并且.SimpleHtmlDom使用字符串解析?这是我不知道的。看看它的来源;)