我正在做一个个人项目来离线查看网页。我想出的第一个想法是使用file_get_contents
获取特定 url 的内容,但这只会获取 html 而不是该页面中的资产(css、图像、javascript 等)。所以我不得不编写正则表达式来获取页面中的样式表和图像:
$css_pattern = '/\S*\.css"/';
$img_src_pattern = '/src=(?:"|\')?.+\.(?:gif|jpg|png|jpeg)(?:"|\')/';
preg_match_all($css_pattern, $contents, $style_matches);
preg_match_all($img_src_pattern, $contents, $img_matches);
这可行,但css中也有图像链接。我还在思考如何处理这些问题。
还有一些项目,如ganon
https://code.google.com/p/ganon/和简单的 html 解析器,它们可能会让我的生活更轻松,但我更喜欢使用正则表达式,因为我想了解更多相关信息。
问题是:有没有更好的方法来做这个项目?该应用程序可能会有用于保存每个站点的资产和 html 的文件夹,它可能会变得笨拙。我听说过 html5 中的清单文件之类的东西,但如果您不拥有该网站,我不确定这是否可能。有任何想法吗?如果没有其他方法可以做到这一点,那么也许你可以帮助我改进我上面的正则表达式。我基本上必须使用str_replace
并foreach
获取样式表:
$stylesheets = array();
foreach($style_matches[0] as $match){
$stylesheets[] = str_replace(array('href=', '"', "'"), '', $match);
}
提前致谢!