加载时间:用PHP的DOMDocument或正则表达式解析HTML是否更快?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了加载时间:用PHP的DOMDocument或正则表达式解析HTML是否更快?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2620字,纯文字阅读大概需要4分钟。
内容图文
我正在将我的Flickr帐户中的图像拖到我的网站上,并且我使用了大约九行代码来创建一个可以拉动图像的preg_match_all函数.
我已多次阅读过,通过DOM解析HTML会更好.
就个人而言,我发现通过DOM解析HTML更加复杂.我编写了一个类似的函数来使用PHP的DOMDocument来提取图像,它大约有22行代码.创建需要一段时间,我不确定它的好处是什么.
每个代码的页面大约在同一时间加载,所以我不确定为什么我会使用DOMDocument.
DOMDocument的工作速度是否比preg_match_all快?
我会告诉你我的代码,如果你有兴趣(你可以看到DOMDocument代码有多长):
//here's the URL
$flickrGallery = 'http://www.flickr.com/photos/***/collections/***/';
//below is the DOMDocument method
$flickr = new DOMDocument();
$doc->validateOnParse = true;
$flickr->loadHTMLFile($flickrGallery);
$elements = $flickr->getElementById('ViewCollection')->getElementsByTagName('div');
$flickr = array();
for($i=0;$i<$elements->length;$i++){
if($elements->item($i)->hasAttribute('class')&&$elements->item($i)->getAttribute('class')=='setLinkDiv'){
$flickr[] = array(
'href' => $elements->item($i)->getElementsByTagName('a')->item(0)->getAttribute('href'),
'src' => $elements->item($i)->getElementsByTagName('img')->item(0)->getAttribute('src'),
'title' => $elements->item($i)->getElementsByTagName('img')->item(0)->getAttribute('alt')
);
}
}
$elements = NULL;
foreach($flickr as $k=>$v){
$setQuery = explode("/",$flickr[$k]['href']);
$setQuery = $setQuery[4];
echo '<a href="?set='.$setQuery.'"><img src="'.$flickr[$k]['src'].'" title="'.$flickr[$k]['title'].'" width=75 height=75 /></a>';
}
$flickr = NULL;
//preg_match_all code is below
$sets = file_get_contents($flickrGallery);
preg_match_all('/(class="setLink" href="(.*?)".*?class="setThumb" src="(.*?)".*?alt="(.*?)")+/s',$sets,$sets,PREG_SET_ORDER);
foreach($sets as $k=>$v){
$setQuery = explode("/",$sets[$k][2]);
$setQuery = $setQuery[4];
echo '<a href="?set='.$setQuery.'"><img src="'.$sets[$k][3].'" title="'.$sets[$k][4].'" width=75 height=75 /></a>';
}
$sets = NULL;
解决方法:
如果你愿意为了正确性而牺牲速度,那么继续尝试用正则表达式来推动你自己的解析器.
你说“就个人而言,我发现通过DOM解析HTML会更复杂.”您是在优化结果的正确性,还是编写代码的容易程度?
如果您想要的只是速度和代码并不复杂,为什么不使用它:
$array_of_photos = Array( 'booger.jpg', 'aunt-martha-on-a-horse.png' );
或者只是
$array_of_photos = Array();
那些在不断的时间运行,他们很容易理解.没问题,对吧?
那是什么?你想要准确的结果吗?然后don’t parse HTML with regular expressions.
最后,当你使用像DOM这样的解析器时,你正在处理一段经过充分测试和调试多年的代码.当您编写自己的正则表达式来进行解析时,您将使用自己必须编写,测试和调试的代码.你为什么不想使用许多人多年来一直使用的工具?你认为自己可以在飞行中做得更好吗?
内容总结
以上是互联网集市为您收集整理的加载时间:用PHP的DOMDocument或正则表达式解析HTML是否更快?全部内容,希望文章能够帮你解决加载时间:用PHP的DOMDocument或正则表达式解析HTML是否更快?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。