如何通过属性值从HTML页面源获取特定HTML标记

时间:2011-02-24 21:54:05

标签: php regex xhtml curl html-parsing

我是stackoverflow的新手,希望在这里找到我的解决方案:)

使用PHP,我想要一个像以下的PHP函数:

function getHtmlTags($html_source, $tag='div', $by_attr="class", $attr_value="class_name"){
}

例如:如果找到1,则应返回如下数组:

array([0] => '<div class="class_name">blah blah</div>');

我到处搜索:(找不到解决办法!请帮忙

1 个答案:

答案 0 :(得分:1)

将您的HTML文档加载到Document Object Model并使用XPath根据给定的参数查找元素。

关于你的正则表达式标签 - 在下降到那个噩梦之前阅读这个 - RegEx match open tags except XHTML self-contained tags

例如(警告 - 完全未经测试)

/**
 * @return DOMNodeList
 */
function getHtmlTags($html_source, $tag='div', $by_attr="class", $attr_value="class_name")
{
    $document = new DOMDocument();
    if (!$document->loadHTML($html_source)) {
        throw new Exception('Invalid HTML source');
    }

    $xpath = new DOMXPath($doc);

    $query = sprintf('//%s[%s="%s"]', $tag, $by_attr, $attr_value);

    return $xpath->query($query);
}