|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
怎么样出来了吧,怎么样自己也可以写出php程序了,虽然离职业和专业的人还有很远,但是好的开始是成功的一半。这个时候改怎么做了呢。现在就是拿1本高手推荐的书,重头到尾读1遍,我说的这个读是自己看。网页 <?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 ImgPathWordStr( $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;
}
}
?>
理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,因此必须要掌握了HTML,才能为今后制作网站打下基础。 |
|