PHP简单dom允许我们获取HTML页面并仅提取标记,留下文本。像这样:
echo file_get_html('http://www.google.com/')->plaintext;
我正在寻找该方法的相反。删除所有文本并仅保留标记。那存在吗?我似乎找不到任何参考。
答案 0 :(得分:1)
在实际的W3C DOM api(不是SimpleHtmlDom)中,任何东西都是节点,而不仅仅是元素节点。使用XPath,您可以使用text()
函数选择它们。
$html = <<<'HTML'
<html><body>
<div>
TEXT<div>TEXT</div>
</div>
</body></html>
HTML;
$document = new DOMDocument();
$document->loadHTML($html);
$xpath = new DOMXpath($document);
foreach ($xpath->evaluate('//text()') as $node) {
$node->parentNode->removeChild($node);
}
echo $document->saveHtml($document->documentElement);
输出:
<html><body><div><div></div></div></body></html>
答案 1 :(得分:0)
不要使用任何搜索并替换php函数或regexp。它们意味着要解析和重新组合字符串和更大的文本。使用符合HTML DOM解析的东西。
http://simplehtmldom.sourceforge.net/manual.htm
例如,要查找html文档中的所有img标记,请执行以下操作:
// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');
// Find all images
foreach($html->find('img') as $element)
echo $element->src . '<br>';
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
如果你转到下面的网址,你将学习如何在加载的html页面中找到html元素
http://simplehtmldom.sourceforge.net/manual.htm#section_find
这是实现这一目标的最有效方式。这有一个内置的查找器来定位html元素并根据您的需要形成它。