清理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写入MySQL数据库的问题 [求助]如何在插入數據庫前過濾圖片上的鏈接! PHP怎么自己做一个网页登录传值给别的网站 php curl模拟提交 PHP里面的template模板用iframe嵌入template.不可以用 用户怎么样能伪造COOKIE认证进入网站? 用PHP程序访问一个网页的几个问题。 各位请进: 菜鸟有小问题. [PHP] 最近完成了自已的BBS站点,望点评! 我怎么让这么一句话自动执行啊? 求组字符串怎么转数组 {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/');
?>