用于在元素之间获取内容的HTML解析器

时间:2010-03-11 23:40:15

标签: php parsing

我正在寻找解析大约100页的数据,所有这些都包含这个HTML字符串:

<span class="cell CellFullWidth"><span class="SectionHeader">EVENT</span><br/><div class="Center">Event Name</div></span>

我对解析器不太熟悉,所以我想知道我应该使用什么来从我遍历的每个页面中提取“事件名称”,以及我应该如何去做。

我查看了简单的HTML DOM,但我无法弄明白。 请帮忙,谢谢!

3 个答案:

答案 0 :(得分:3)

假设:

  • 所有活动名称均以div为单位
  • 包含div必须具有“Center”类
  • 所有具有“中心”类的div包含事件名称

这里是:

<?php

$content = '
<span class="cell CellFullWidth"><span class="SectionHeader">EVENT</span><br/><div class="Center">Event Name1</div></span>
<span class="cell CellFullWidth"><span class="SectionHeader">EVENT</span><br/><div class="Center">Event Name2</div></span>

';

$html = new DOMDocument();

$html->loadHTML($content);

$divs = $html->getElementsByTagName('div');

foreach($divs as $div) {
    if($div->getAttribute('class') == 'Center') {
        $events[] = $div->nodeValue;
    }
}

print_r($events);

答案 1 :(得分:1)

如果事件名称以外的所有文本始终相同,则只能使用子字符串(因为起始位和结束位的长度始终相同)

$event_name = substr($current_line, 98, -14);

当你删除前98个字符和最后14个字符时,它会给你留下什么。

答案 2 :(得分:0)

您可以使用PHP's DOM manipulation functions

基本上,您可以通过DOMDocument::loadHTML()DOMDocument::loadHTMLFile()创建新的DOMDocument,然后使用$yourDOmObject->getElementsByTagName()获取所有<span>元素。