正则表达式问题有多个结果

时间:2011-06-16 12:49:15

标签: php regex dom

我正在做一些php html解析,这是我现在的代码

function get_tag($htmlelement,$attr, $value, $xml ,$arr) {
    $attr = preg_quote($attr);
    $value = preg_quote($value);
    if($attr!='' && $value!='')
    {
    $tag_regex = '/<'.$htmlelement.'[^>]*'.$attr.'="'.$value.'">(.*?)<\\/'.$htmlelement.'>/si';
    preg_match($tag_regex,$xml,$matches);
    }
    else
    {
    $tag_regex = '/'.$htmlelement.'[^>]*"(.*?)\/'.$htmlelement.'/i';
    preg_match_all($tag_regex,$xml,$matches);
    }
    if($arr)
        return $matches;
    else 
        return $matches[1];
}
$htmlcontent = file_get_contents("doc.html");
$extract = get_tag('tbody','id', 'open', $htmlcontent,false);

$trows = get_tag('tr','', '', $htmlcontent,false);

可以在http://pastebin.com/ydiAdiuC查看必须解析的行/ $ extract中的内容。

基本上,我正在阅读html内容并从html获取标签tbody。现在我想在tbody中获取每个tr和td值并在我的页面中使用它。任何想法如何使用,我想我没有使用正确的方法来实现preg_match_all。

1 个答案:

答案 0 :(得分:7)

使用PHP DOM Parsers进行此操作。不是正则表达式。

快速方法:

  • 中加载
  • 获取tbody标记。
  • 获取tr标记。