如何使用正则表达式获取 `<body>` 标签内的全部内容?
Posted
技术标签:
【中文标题】如何使用正则表达式获取 `<body>` 标签内的全部内容?【英文标题】:How can I grab the entire content inside `<body>` tag with regex? 【发布时间】:2011-10-17 01:23:43 【问题描述】:如何使用正则表达式获取<body>
标签内的全部内容?
例如,
<html><body><p><a href="#">xx</a></p>
<p><a href="#">xx</a></p></body></html>
我只想退货,
<p><a href="#">xx</a></p>
<p><a href="#">xx</a></p>
或者还有其他更好的想法吗?也许是 DOM 但我必须使用 saveHTML();
然后它会返回 doctype
和 body
标签...
HTML Purifier 使用起来很痛苦,所以我决定不使用它。我认为正则表达式可能是我灾难的下一个最佳选择。
【问题讨论】:
这样的正则表达式对你不起作用<body>(.*)</body>
?
看看这个帖子***.com/questions/3577641/…
@sahid - 不,怎么样,<body class="large-text"> ... </body>
不要使用正则表达式。 htmlparsing.com/php.html 为您提供了如何使用正确的 HTML 解析器的示例。其实,如果你使用的是simple_html_dom,那么简单到file_get_html('http://www.google.com/')->plaintext;
【参考方案1】:
preg_match("/<body[^>]*>(.*?)<\/body>/is", $html, $matches);
$matches[1]
将是 body 标签的内容
【讨论】:
查看***.com/questions/701166/… 上的有效(!) HTML 示例,看看你是如何使用正则表达式失败的。【参考方案2】:preg_match("~<body.*?>(.*?)<\/body>~is", $html, $match);
print_r($match);
【讨论】:
以上是关于如何使用正则表达式获取 `<body>` 标签内的全部内容?的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 和 XPath 获取匹配正则表达式的 href
如何使用正则表达式删除大于/小于符号 < > 内的字符串? [关闭]