如何从包含2个html标记的页面中使用抓取工具读取所有数据,例如:
<html>
<body>
text text text
</body>
</html>
text2 text2 text2 text
</body>
</html>
我需要替换第一个关闭的html和body标签,然后读取所有数据。我该怎么做?
答案 0 :(得分:0)
如果之后还有一对相同的标签,您可以使用正则表达式替换</body></html>
的第一个外观:
// https://regex101.com/r/nVuN8S/1
$regex = '/(?<replace><\/body>\s*<\/html>)(?=(?:.|\s)*<\/body>\s*<\/html>)/';
$new_html = preg_replace($regex, '', $html);
在这里,您可以查找以{0}}和</body>
分隔的任意数量的空格字符(例如换行符号)。然后使用正向前瞻来检查它们后面是否包含任意数量的符号,包括空格,以及后面的其他</html>
和</body>
标记。
阅读&#34;所有数据&#34; (假设它表示</html>
标签之间的所有内容),您可以使用另一个正则表达式E.g:
<body>
当然,您可以使用几种不同的方法来获取数据:简单的字符串操作(删除// https://regex101.com/r/nVuN8S/2
$regex = '/<body>(?<data>(?:.|\s)+)<\/body>'/;
之前和<body>
之后的文本,以及标记本身),DOM文档功能等。