PHP中FTP相关函数小结
本文实例讲述了PHP中FTP相关函数。分享给大家供大家参考,具体如下:
<?php set_time_limit(0); //转存本地地址 define( 'STORE_PATH', dirname(__FILE__).'/../../../../temp_data/test/' ); define('LIST_PATH',STORE_PATH.'list/'); define('CHAPTER_PATH',LIST_PATH.'chapter/'); define('DETAIL_PATH',LIST_PATH.'detail/'); createFolder(STORE_PATH); createFolder(LIST_PATH); createFolder(CHAPTER_PATH); createFolder(DETAIL_PATH); $ftp_server="ip"; $ftp_user="anonymous"; $ftp_pass="anonymous"; $conn_id=ftp_connect($ftp_server)ordie("Couldn'tconnectto$ftp_server"); if(@ftp_login($conn_id,$ftp_user,$ftp_pass)){ echo"Connectedas$ftp_user@$ftp_server\n"; }else{ echo"Couldn'tconnectas$ftp_user\n"; } ftp_pasv($conn_id,true); /** *创建文件并写入内容 * *@paramstring$pathpath/ *@paramstring$fileNamefilename *@paramstring$datacontent * *@returnstring返回路径 */ functioncreateFile($path,$fileName,$data) { if(empty($data)){ returnfalse; } file_put_contents($path.$fileName,$data); return$path.$fileName; } /** *创建目录 * *@paramstring$pathpath * *@returnno */ functioncreateFolder($path) { if(!file_exists($path)){ createFolder(dirname($path)); if(mkdir($path,0777)){ echo"\ndirnotfind,makedir".dirname($path)."isok!"; }else{ echo"\ndirnotfind,makedir".dirname($path)."isfail!"; } } } /** *抓取电子书籍的类别 * *@paramstring$xmlUrlxml地址 *@paramstring$saveFileName文件名称 * *@returnstring返回路径 */ functiongetClassXml($conn_id,$categoryDir,$saveFileName='category.xml') { //获取顶级栏目 $clist=getDirListFormFtp($conn_id,$categoryDir); $itemTPL='<Item><ID>%s</ID><Name>%s</Name></Item>'; $items=''; foreach($clistas$key=>$value){ $items.=sprintf($itemTPL,$value['name'],$value['detail']); } $bodyTPL='<Tofo><Class>%s</Class></Tofo>'; $data=sprintf($bodyTPL,$items); echo"\n".createFile(STORE_PATH,$saveFileName,$data); } set_time_limit(0); $start_time=time(); $bookCache=array(); $categoryDir="\\tingshu\\web"; getClassXml($conn_id,$categoryDir); //获取顶级栏目 $clist=getDirListFormFtp($conn_id,$categoryDir); //获取二级栏目分类 foreach($clistas$key=>$value){ $_secondCateoryDir=$categoryDir.'\\'.$value['name']; $_secondCateorylist=getDirListFormFtp($conn_id,$_secondCateoryDir); $listData=''; $listTPL='<Tofo><Class><ID>%s</ID><Name>%s</Name><Books>%s</Books></Class></Tofo>'; $items='<Item><ID>%s</ID><Name>%s</Name></Item>'; $listItemString=''; //获取详细书籍章节列表 foreach($_secondCateorylistas$key=>$book){ $listItemString.=sprintf($items,$book['name'],$book['detail']); $_bookListDir=$_secondCateoryDir.'\\'.$book['name']; $chapters=getBook($conn_id,$_bookListDir); //生产book章节html getBookofChapter($book,$chapters); //缓存bookid和章节信息 $bookCache[$book['name']]=array('category'=>$value['name'],'chapters'=>$chapters); } //生成二级栏目列表页 $listData=sprintf($listTPL,$value['name'],$value['detail'],$listItemString); $list_save_path=$value['name'].'.xml'; echo"\n".createFile(LIST_PATH,$list_save_path,$listData); } $arrString="<?php\n\$bookCache=".var_export($bookCache,true).";\n?>"; echo"\n建立缓存文件:".createFile(STORE_PATH,'bookcache.php',$arrString); /** *抓取书籍章节信息 * *@paramarray$bookIds书籍章节信息 * *@returnboolean返回是否抓取成功 */ functiongetBookofChapter($bookinfo,$chapters) { if(!is_array($chapters)){ returnfalse; } $bookData=''; $bookTPL='<Tofo><Books><ID>%s</ID><Name>%s</Name><Volumes>%s</Volumes></Books></Tofo>'; $bookItemTPL='<Item><ID>%s</ID><Name>%s</Name></Item>'; //<Play>%s</Play> //<Download>%s</Download> //,$item['downurl'],$item['downurl'] $chapterString=''; foreach($chaptersas$key=>$item){ $chapterString.=sprintf($bookItemTPL,$item['name'],$item['detail']); } //生成二级栏目列表页 $bookData=sprintf($bookTPL,$bookinfo['name'],$bookinfo['detail'],$chapterString); $book_chapter_save_path=$bookinfo['name'].'.xml'; if(!empty($bookData)){ echo"\n".createFile(CHAPTER_PATH,$book_chapter_save_path,$bookData); } returntrue; } functiongetBook($conn_id,$_bookListDir){ $chapter=array(); $buff=ftp_nlist($conn_id,$_bookListDir); if(is_array($buff)){ $resourceArray=array(); foreach($buffas$key=>$value){ if(strstr($value,'.txt')){ }else{ $resourcesName=str_replace($_bookListDir.'\\',"",$value); $temp=preg_split('/\./',$resourcesName); $resourceArray[trim($temp[0])]=$resourcesName; } } foreach($buffas$key=>$value){ if(strstr($value,'.txt')){ $name=trim(str_replace(".txt","",str_replace($_bookListDir.'\\',"",$value))); $chapter[$name]=array( 'name'=>$name, 'detail'=>getFileContentsFormFtp($conn_id,$value), 'downurl'=>$resourceArray[$name] ); } } } ksort($chapter,SORT_NUMERIC); echo"\n"; var_dump('chapterindex:'.implode(array_keys($chapter),',')); echo"\n"; return$chapter; } functiongetDirListFormFtp($conn_id,$categoryDir){ $categoryArray=array(); $dirs=getDirNameFormFtp($conn_id,$categoryDir); //获取分类描述 foreach($dirsas$key=>$value){ $path=$categoryDir.'\\'.$value.'.txt'; $categoryArray[]=array('name'=>$value,'detail'=>getFileContentsFormFtp($conn_id,$path)); } return$categoryArray; } functiongetFileContentsFormFtp($conn_id,$server_file){ $_tempFileName=STORE_PATH.'temp.tmp'; $content=''; try{ if(ftp_get($conn_id,$_tempFileName,$server_file,FTP_ASCII)){ $content=file_get_contents($_tempFileName); } }catch(Exception$e){ var_dump('errortimeout:-----'); global$ftp_server; $conn_id=ftp_connect($ftp_server); if(@ftp_login($conn_id,$ftp_user,$ftp_pass)){ echo"Connectedas$ftp_user@$ftp_server\n"; }else{ echo"Couldn'tconnectas$ftp_user\n"; } ftp_pasv($conn_id,true); if(ftp_get($conn_id,$_tempFileName,$server_file,FTP_ASCII)){ $content=file_get_contents($_tempFileName); } } $content=iconv("GBK","UTF-8//IGNORE",trim($content)); echo"\n"; var_dump('filename:'.$server_file.';content:'.$content); return$content; } functiongetDirNameFormFtp($conn_id,$dirString){ $buff=ftp_rawlist($conn_id,$dirString); $dirs=array_filter($buff,"dirfilter"); foreach($dirsas$key=>$value){ $temp=preg_split('/<DIR>/',$value); $dirs[$key]=trim($temp[1]); } asort($dirs,SORT_NUMERIC); return$dirs; } functiondirfilter($var){ return(strstr($var,'<DIR>')); } ftp_close($conn_id);
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP编码与转码操作技巧汇总》、《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。