我想从网上抓一个网页,然后将HTML标签清理整洁一下,比如说很多<div>开始标签和结束标签相隔很多行,中间还有很多不必要的东西,像<A>标签里一些不要的属性都去掉,只留下HREF属性等等,最后还要将这个网页上大小超过100K的图片保存下来,具体该怎么做啊,我是自学的PHP,请尽量讲简单些,谢谢

解决方案 »

  1.   

    写完没有测试过,如果只要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/');
    ?>
      

  2.   

    change_match_string()函数是什么啊,提示没有这个函数啊