2016-12-22 50 views
0

如何与从具有2个html标签页面中的履带式读取所有数据读取的所有数据,例如:腓履带从2个HTMLS

<html> 
<body> 
text text text 
</body> 
</html> 



text2 text2 text2 text 
</body> 
</html> 

我需要更换第一关闭html和body标签,然后读取所有数据。我怎么做?

+0

可能出现[在PHP中如何解析和处理HTML/XML? //stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php) – Beloo

+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); 

在这里,你找</body></html>任意数量的空格分隔字符(例如新行)。然后,您使用积极的向前看来检查它们后面是否包含任何数量的符号(包括空格),以及其后的额外</body></html>标记。

改为“所有数据”(假设这意味着<body>标签之间的一切),你可以使用另一个正则表达式如:

// https://regex101.com/r/nVuN8S/2 
$regex = '/<body>(?<data>(?:.|\s)+)<\/body>'/; 

当然,你可以使用几个不同的方法来获得数据:简单的字符串处理(在<body>之前和</body>之后以及标签本身之前删除文本),DOM文档功能等。