喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: [问题] 这个 读网页的类怎么用????????????  
 
hunkzhang
注册会员
Rank: 2



UID 83876
精华 0
积分 86
帖子 50
金钱 86 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-11-27
状态 离线
这个 读网页的类怎么用????????????

<?php
class Thief{
  // 需要得到数据的网址
  var $URL;
  // 需要分析的开始标记
  var $startFlag;
  //需要分析的结束标记
  var $endFlag;
  //存储图片的路径
  var $saveImagePath;
  //访问图片的路径
  var $imageURL;
  // 列表内容
  var $ListContent;
  //需要获得的图片路径
  var $ImageList;
  //存储的图片名称
  var $FileName;
  
  /**
  * 得到页面内容
  * @return String 列表页面内容
  */
  
  function getPageContent ()
  {               
   $pageContent = @file_get_contents( $this->URL );
   
   return $pageContent;
  }

  
  /**
  * 根据标记得到列表段
  * @param $content  页面源数据
  * @return String   列表段内容
  */
  
  function getContentPiece ( $content )
  {
   $content = $this->getContent( $content, $this->startFlag, $this->endFlag );
                                                     if(!$content)  $content=$this->cut ($content, $this->startFlag, $this->endFlag );
   return $content;
  }
  
  
  /**
  * 得到一个字符串中的某一部分
  * @param $sourceStr 源数据
  * @param $startStr 分离部分的开始标记
  * @param $endStart 分离部分的结束标记
  * @return boolean  操作成功返回true
  */
  
  function getContent ( $sourceStr, $startStr, $endStart )
  {
   $s = preg_quote( decode( $startStr ) );
   $e = preg_quote( decode( $endStart ) );
   $s = str_replace( " ", "[[:space:]]", $s );
   $e = str_replace( " ", "[[:space:]]", $e );
   $s = str_replace( "\r\n", "[[:cntrl:]]", $s );
   $e = str_replace( "\r\n", "[[:cntrl:]]", $e );

   preg_match_all( "@" . $s . "(.*?)". $e ."@is", $sourceStr, $tpl );

   $content = $tpl[1];
   $content = implode( "", $content );
   return $content;
  }
  
  function cut ( $sourceStr, $startStr, $endStr )
  {
                                                return  cut( $sourceStr ,decode( $startStr )  ,decode( $endStr) );
                                    }
  
  /**
  * 得到只含有连接和内容的列表数组
  * @param $sList  页面列表源数据
  * @return array  列表段内容
  */
  
  function getSourceList ( $sList )
  {
   preg_match_all( "/<a[[:space:]](.*?)<\/a>/i", $sList, $list );

   $list = $list[0];
//foreach($list as $l) echo $l;
                                                     if(!$list || !is_array($list)){
                                                                   return $this->getSourceListExtend($sList);
                                                     }else{
                                   return $this->getList ( $list );
                                                     }
                                                     
  }

                                   function getSourceListExtend($sList)
                                   {
                                                  $content=explode("</a>",$sList);
                                                  for($i=0;$i<count($content)-1;$i++)
                                                  {
                                                           $lists=explode("<a",$content[$i]);
                                                           $list[]=$lists[1];
                                                  }

                                                           return $this->GetListExtend( $list );
                                   }

  /**
  * 得到列表内容
  * @param $list  列表段内容
  * @return array  含有标题和连接的数组
  */
  
  function getList ( $list )
  {
   for ( $i = 0; $i < count( $list ); $i++ )
   {               
    //title
    preg_match_all( "/>(.*?)<\/a>/i", $list[$i], $templ );

    //content
    preg_match_all( "/href=(\"|'|)(.*?)(\"|'|)/i", $list[$i], $tempc );
   
    //获取的数据正确
    if( !empty( $templ[1][0] ) && !empty( $tempc[2][0] ) )
    {
     if( 0 == strpos( $tempc[2][0], "/" ) )
     {
      preg_match( "@http://(.*?)/@i", $this->URL, $url );
      $tempc[2][0] = substr( $url[0], 0, strlen( $url[0] ) - 1 ) . $tempc[2][0];
     }
     
     $listContent[$i][0] = $templ[1][0];
      $listContent[$i][1] = $tempc[2][0];
    }
                                                     }
                                                     if(!$listContent || !is_array($listContent)){
                                                               return $this->GetListExtend ( $list );
                                                     }else{
             return $listContent;
                                                     }
  }

  function GetListExtend ( $list )
  {                  
                                                     $list=str_replace("\"","",$list);
                                                     $list=str_replace("'","",$list);
                                                     $list=str_replace("=","",$list);
   for ( $i = 0; $i <count( $list ); $i++ )
   {
    //content
    $temp_link=$this->cut($list[$i],"href"," ");
                                                                       echo $temp_link."<br>";
    //title
                                                                       if(eregi(">",$list[$i])){
                                                                              $temp_title=substr(strrchr($list[$i], ">"), 1 );
                                                                              $temp_title=preg_replace( "@\<(.*?)\>@is","",$temp_title);
                                                                              $temp_title=str_replace( ">","",$temp_title);
                                                                              $temp_title=str_replace( "<","",$temp_title);                                                                             
                                                                              if(!$temp_title)   $temp_title=$list[$i] ;
                                                                               $temp_title=preg_replace( "@\<(.*?)\>@is","",$temp_title);
                                                                               $temp_title=str_replace( ">","",$temp_title);
                                                                               $temp_title=str_replace( "<","",$temp_title);      
                                                                                echo $temp_title."<br>";
                                                                       }else{
                                                                             $temp_title=$list[$i];      
                                                                             $temp_title=preg_replace( "@\<(.*?)\>@is","",$temp_title);
                                                                              $temp_title=str_replace( ">","",$temp_title);
                                                                              $temp_title=str_replace( "<","",$temp_title);  
                                                                              echo $temp_title."<br>";
                                                                       }
    //获取的数据正确
    if( !empty( $temp_link ) && !empty( $temp_title) )
    {
     if( 0 == strpos( $tempc[2][0], "/" ) )
     {
      preg_match( "@http://(.*?)/@i", $this->URL, $url );
      $temp_link = substr( $url[0], 0, strlen( $url[0] ) - 1 ) . $temp_link;
     }
     
     $listContent[$i][0] = trim($temp_title);
     $listContent[$i][1] = $temp_link;
    }
                                                     }
   return $listContent;

                                   }


  /**
  * 得到正文中的图片路径信息
  * @param $content 正文信息
  * @return array  信息中图片路径的数组
  */
  
  function getImageList ( $content )
  {
   preg_match_all( "/src=(\"|')(.*?)(\"|')/i", $content, $temp );
   
   $imageList = $temp[2];
   return array_unique($imageList);
  }
  
  
  /**
  * 下载图片时将页面中的路径替换成新的路径
  * @param $content  需要替换路径的页面内容
  * @return String   替换后的页面内容
  */
  
  function replaceImageParh ( $content )
  {
   for ( $i = 0; $i < count( $this->ImageList ); $i++ )
   {
                                                                      if($this->FileName[$i]){
                  $content = str_replace( $this->ImageList[$i], $this->imageURL.$this->FileName[$i], $content );
                                                                      }else{     
                                                                                    //$s=" /src=(\\\"|')".preg_quote($this->ImageList[$i])."(\\\"|')/i";
                  $content = str_replace($this->ImageList[$i], $GLOBALS[SET][webpath]."images/nopic.gif", $content );
                                                                      }
   }
   
   return $content;
  }
  
  
  /**
  * 下载图片时读取图片文件后存储在相应路径
  * @param $imageURL 需要读取的图片文件
  * @return boolean  操作成功返回true
  */
  
  function saveImage ( $imageURL )
  {
   
   for ( $i = 0; $i < count( $imageURL ); $i++ )
   {
    $fName = $this->saveFile( $imageURL[$i] );
    if( !empty( $fName ) )
    {               
     $filename[$i] = $fName;
    }
   }
   
   return $filename;
  }
  
  
  function saveFile( $fileName )
  {
   
   $s_filename = basename( $fileName );
   $ext_name = strtolower( strrchr( $s_filename, "." ) );
   
   if( ( ".jpg" && ".gif" && ".swf" ) != strtolower( $ext_name ) )
   {
    return "";
   }
   
   
   if( 0 == strpos( $fileName, "/" ) )
   {
    preg_match( "@http://(.*?)/@i", $this->URL, $url );
    $url = $url[0];
   }
   
   if( 0 == strpos( $fileName, "." ) )
   {
    $url = substr( $this->URL, 0, strrpos( $fileName, "/" ) );
   }
   
   $contents = @file_get_contents( $url . $fileName );

   $s_filename = time(). rand( 1000, 9999 ) . $ext_name;
   
   //file_put_contents( $this->saveImagePath.$s_filename, $contents );
   
   $handle = @fopen ( $this->saveImagePath.$s_filename, "w" );
   @fwrite( $handle, $contents );
   @fclose($handle);
   if(filesize($this->saveImagePath.$s_filename)>3072){
             return $s_filename;
                                                     }else{
                                                               @unlink($this->saveImagePath.$s_filename);
             return "";
                                                    }
   
  }
  
  /**
  * 不下载图片则格式化其路径为绝对路径
                                   * 不能格式化变态路径 Eg: ./../  or /./../ 一类的  不过不影响结果
  * @param $imageURL 需要读取的图片文件
  * @return $filename  返回格式化的图片路径
  */
                                   function  ToPath($imageURL)
                                   {
                                                     $PathArray=parse_url($this->URL);
                                                     $webpath=$PathArray[scheme]."://".$PathArray[host] ;
                                                     $filepath=$PathArray[path] ;
                                           for ( $i = 0; $i < count( $imageURL ); $i++ )
   {
                                                                if( substr( $imageURL[$i] ,0,1 )== '/' ){
                                                                             $filename[$i] =$webpath.$imageURL[$i];
                                                                }elseif( substr( $imageURL[$i] ,0,2 )== './' ){
                                                                             $filename[$i] =$webpath.$filepath.substr( $imageURL[$i] ,1, strlen( $imageURL[$i]) );
                                                                }elseif( substr( $imageURL[$i] ,0,3 )== '../' ){
                                                                             $index=strrchr($filepath,"/");
                                                                             $filename[$i] =$webpath.substr($filepath,0,$index).substr($imageURL[$i] ,2, strlen( $imageURL[$i]));
                                                                }elseif(substr( $imageURL[$i] ,0,4)== 'http'){
                                                                             $filename[$i] =$imageURL[$i] ;
                                                                }else{
                                                               
                                                                }
   }
   
   return $filename;                     

                                   }

  /**
  * 不下载图片时将页面中的路径替换成新的路径
  * @param $content  需要替换路径的页面内容
  * @return String   替换后的页面内容
  */
                                  function ImgPathReplace( $content )
                                  {
   for ( $i = 0; $i < count( $this->ImageList ); $i++ )
   {
    $content = str_replace( $this->ImageList[$i], $this->FileName[$i], $content );
   }
   
   return $content;               
                                  }   

  function setURL ( $u )
  {
   $this->URL = $u;
   return true;
  }
  
  function setStartFlag ( $s )
  {
   $this->startFlag = $s;
   return true;
  }
  
  function setEndFlag ( $e )
  {
   $this->endFlag = $e;
   return true;
  }
  
  function setSaveImagePath ( $p )
  {
   $this->saveImagePath = $p;
   return true;
  }
  
  function setImageURL ( $i )
  {
   $this->imageURL = $i;
   return true;
  }
  
  
}

?>

这个类怎么用啊???
2006-12-29 10:19 AM#1
查看资料  发短消息  顶部
 
hunkzhang
注册会员
Rank: 2



UID 83876
精华 0
积分 86
帖子 50
金钱 86 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-11-27
状态 离线
[推荐阅读] 招聘php开发工程师,专兼职均可(西安)
是这样么???????????????不对啊

是这样么???????????????不对啊


<?php
class Thief{   
  var $URL           ='http://www.baidu.com';
    var $startFlag   ='在这填什么??';
  //需要分析的结束标记
  var $endFlag      ='在这填什么??'  ;
  //存储图片的路径
  var $saveImagePath='c:/';
  //访问图片的路径
  var $imageURL       ='c:';
  // 列表内容
  var $ListContent     ='在这填什么??';
  //需要获得的图片路径
  var $ImageList       ='c:/';
  //存储的图片名称
  var $FileName        ='mypic';
  
  /**
  * 得到页面内容
  * @return String 列表页面内容
  */
  
  function getPageContent ()
  {               
   $pageContent = @file_get_contents( $this->URL );
   
   echo $pageContent;//怎么什么都不显示啊?????????????????????????????????
  }
2006-12-30 02:30 PM#2
查看资料  发短消息  顶部
 
seeee
注册会员
Rank: 2
一般会员



UID 31288
精华 0
积分 191
帖子 158
金钱 191 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2004-9-21
状态 离线
[推荐阅读] 这个在线播放的是怎么弄得?观看的时候一点也不卡~
$oo = new Thief();
$oo->url = "http://www.xxxcom";




Linux Love
2006-12-30 04:14 PM#3
查看资料  发短消息  顶部
 
hunkzhang
注册会员
Rank: 2



UID 83876
精华 0
积分 86
帖子 50
金钱 86 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-11-27
状态 离线
[推荐阅读] 关于Rewrite的一个奇怪问题。。。。
其他参数填什么?

其他参数填什么?比如开始处,随便写个作例子,只要格式对就行撒
2007-1-4 02:07 PM#4
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.071909 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP