【问题标题】:Find all HTML table rows in PHP with regexp使用正则表达式在 PHP 中查找所有 HTML 表格行
【发布时间】:2012-08-07 13:48:44
【问题描述】:

尝试使用此运算符查找所有 HTML

行,但什么也没有:
preg_match_all("#<tr[^>]*>.*</tr>#", $content, $matches);

怎么了?

【问题讨论】:

标签: php html regex parsing preg-match-all


【解决方案1】:
preg_match_all ('#<tr[^>]*>(.*?)</tr>#s')

添加了“s”标志,这样它也匹配换行符,匹配的问号(惰性),还添加了括号(捕获组)。

【讨论】:

    【解决方案2】:

    除非您遇到复杂的递归表达式,否则任何正则表达式都会遇到嵌套表的问题。

    试试这个:

    $dom = new DOMDocument();
    $dom->loadHTML($content);
    $matches = $dom->getElementsByTagName("tr");
    $count = $matches->length;
    

    【讨论】:

    • 如果我想在那之后查看 标签之间的 HTML 怎么办?
    • 由于$matches是一个DOMNodeList,每个节点都有一个属性childNodes,它是它的子节点的另一个DOMNodeList。
    • @Kolink 好吧,当我必须解析无效的 HTML 时,DOMDocument 无法解析。
    【解决方案3】:

    我认为您使用PHP HTML parser 会取得更大的成功。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签