清理HTML标签和保存图片 我想从网上抓一个网页,然后将HTML标签清理整洁一下,比如说很多<div>开始标签和结束标签相隔很多行,中间还有很多不必要的东西,像<A>标签里一些不要的属性都去掉,只留下HREF属性等等,最后还要将这个网页上大小超过100K的图片保存下来,具体该怎么做啊,我是自学的PHP,请尽量讲简单些,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写完没有测试过,如果只要href里的东西应该可以<? function fetch_urlpage_contents($url){ $c=file_get_contents($url); return $c; } //获取匹配内容 //$begin: 开始截取点 //$end: 结束截取点 //$c:从中搜索的内容 function fetch_match_contents($begin,$end,$c) { $begin=change_match_string($begin); $end=change_match_string($end); //preg_match_all if( preg_match("/{$begin}(.*?){$end}/i",$c,$rs ) ){ return $rs[1]; }else { return ""; } } //获取匹配的所有内容 //$begin: 开始截取点 //$end: 结束截取点 //$c:从中搜索的内容 function fetch_match_contents_all($begin,$end,$c) { $begin=change_match_string($begin); $end=change_match_string($end); //preg_match_all if( preg_match_all("/{$begin}(.*?){$end}/i",$c,$rs ) ){ return $rs[1]; }else { return ""; } } function pick($url){ $ft = "href=\""; $th = "\""; $c=fetch_urlpage_contents($url); //获取所有匹配内容 $rs = fetch_match_contents_all($ft,$th,$c); print_r($rs); //再次细化 foreach( $rs as $k => $v ){ $rss["href"] = fetch_match_contents( $config["title"]["b"],$config["title"]["e"],$v ); }//end foreach foreach( $rss["href"] as $k => $v ){ GrabImage( $v ); } } function GrabImage($url,$filename=""){ if($url=="")return false; if($filename==""){ //取得远程图片的名称 $ext=strrchr($url,"."); //当扩展名为gif,jpg,png,bmp以外时返回false,结束处理。 if($ext!=".gif" && $ext!=".jpg" && $ext!=".png" && $ext!=".bmp") return false; //生成基于时间和日期的本地文件名。 $filename=date("dMYHis").$ext; } if( (( filesize( $url ) )/1024) < 100 ) return false; //打开浏览器缓冲区。 ob_start(); //将文件读入到缓冲。 readfile($url); //得到缓冲区的内容并且赋值给变量$img。 $img = ob_get_contents(); //关闭并清空缓冲. ob_end_clean(); //在本地创建新文件$filename,并将读入内容存入其中。 $fp2=@fopen($filename,"a") or print "不能打开文件!"; if( fwrite($fp2,$img) ){ print "不能写入文件"; return 0; } fclose($fp2); return $filename;}pick('http://www.163.com/');?> change_match_string()函数是什么啊,提示没有这个函数啊 求个正则 php session相关问题 404错误之后转到指定的页面 急 FCK在UNIX下出错 一个XML问题 "圣经"递归问题的困惑 想了一天555也无解... 请问这段代码为什么总是显示mysql error1064:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL 当我需要高精度位运算时,遇到溢出该怎么解决?谢谢帮忙,我把自己能给的分都给了。。 菜问题,,高手帮忙。。 问一个小问题 求组字符串怎么转数组 {dede:loop}的问题
function fetch_urlpage_contents($url){
$c=file_get_contents($url);
return $c;
}
//获取匹配内容
//$begin: 开始截取点
//$end: 结束截取点
//$c:从中搜索的内容
function fetch_match_contents($begin,$end,$c)
{
$begin=change_match_string($begin);
$end=change_match_string($end);
//preg_match_all
if( preg_match("/{$begin}(.*?){$end}/i",$c,$rs ) ){
return $rs[1];
}else {
return "";
}
}
//获取匹配的所有内容
//$begin: 开始截取点
//$end: 结束截取点
//$c:从中搜索的内容
function fetch_match_contents_all($begin,$end,$c)
{
$begin=change_match_string($begin);
$end=change_match_string($end);
//preg_match_all
if( preg_match_all("/{$begin}(.*?){$end}/i",$c,$rs ) ){
return $rs[1];
}else {
return "";
}
} function pick($url){
$ft = "href=\"";
$th = "\""; $c=fetch_urlpage_contents($url);
//获取所有匹配内容
$rs = fetch_match_contents_all($ft,$th,$c);
print_r($rs);
//再次细化
foreach( $rs as $k => $v ){
$rss["href"] = fetch_match_contents( $config["title"]["b"],$config["title"]["e"],$v );
}//end foreach foreach( $rss["href"] as $k => $v ){
GrabImage( $v );
}
} function GrabImage($url,$filename=""){
if($url=="")return false;
if($filename==""){
//取得远程图片的名称
$ext=strrchr($url,".");
//当扩展名为gif,jpg,png,bmp以外时返回false,结束处理。
if($ext!=".gif" && $ext!=".jpg" && $ext!=".png" && $ext!=".bmp") return false;
//生成基于时间和日期的本地文件名。
$filename=date("dMYHis").$ext;
} if( (( filesize( $url ) )/1024) < 100 ) return false;
//打开浏览器缓冲区。
ob_start();
//将文件读入到缓冲。
readfile($url);
//得到缓冲区的内容并且赋值给变量$img。
$img = ob_get_contents();
//关闭并清空缓冲.
ob_end_clean(); //在本地创建新文件$filename,并将读入内容存入其中。
$fp2=@fopen($filename,"a") or print "不能打开文件!";
if( fwrite($fp2,$img) ){
print "不能写入文件";
return 0;
}
fclose($fp2);
return $filename;
}
pick('http://www.163.com/');
?>