gio*_*o79 3 php regex html-parsing
可能重复:
使用PHP解析HTML的最佳方法
我知道我应该使用像php domdocument(http://docs.php.net/manual/en/domdocument.loadhtml.php)或tagsoup 这样的html解析器.
我如何使用php domdocument在特定标签之间提取文本,例如在h1,h2,h3,p,table之间获取文本?看来我只能用getelementbytagname为一个标签做这个.
这样的任务有更好的HTML解析器吗?或者我将如何循环php domdocument?
你是对的,使用DomDocument(因为正则表达式不是解析HTML的好主意.为什么?看这里和这里的原因).
getElementsByTagName为您提供一个DOMNodeList,您可以迭代它以获取所有找到的元素的文本.所以,你的代码看起来像:
$document = new \DOMDocument();
$document->loadHTML($html);
$tags = array ('h1', 'h2', 'h3', 'h4', 'p');
$texts = array ();
foreach($tags as $tag)
{
$elementList = $document->getElementsByTagName($tag);
foreach($elementList as $element)
{
$texts[$element->tagName][] = $element->textContent;
}
}
return $texts;
Run Code Online (Sandbox Code Playgroud)
请注意,您应该在那里进行一些错误处理,并且您也将丢失文本的上下文,但您可以根据需要编辑此代码.