DDR爱好者之家 Design By 杰米
本文实例讲述了PHP中FTP相关函数。分享给大家供大家参考,具体如下:
<"ip"; $ftp_user = "anonymous"; $ftp_pass = "anonymous"; $conn_id = ftp_connect ( $ftp_server ) or die ( "Couldn't connect to $ftp_server" ); if (@ftp_login ( $conn_id, $ftp_user, $ftp_pass )) { echo "Connected as $ftp_user@$ftp_server\n"; } else { echo "Couldn't connect as $ftp_user\n"; } ftp_pasv($conn_id, true); /** * 创建文件并写入内容 * * @param string $path path/ * @param string $fileName filename * @param string $data content * * @return string 返回路径 */ function createFile ($path, $fileName, $data) { if (empty($data)) { return false; } file_put_contents($path . $fileName, $data); return $path . $fileName; } /** * 创建目录 * * @param string $path path * * @return no */ function createFolder ($path) { if (! file_exists($path)) { createFolder(dirname($path)); if (mkdir($path, 0777)) { echo "\n dir not find ,make dir " . dirname($path) . " is ok!"; } else { echo "\n dir not find ,make dir " . dirname($path) . " is fail!"; } } } /** * 抓取电子书籍的类别 * * @param string $xmlUrl xml地址 * @param string $saveFileName 文件名称 * * @return string 返回路径 */ function getClassXml ($conn_id,$categoryDir, $saveFileName = 'category.xml') { //获取顶级栏目 $clist = getDirListFormFtp($conn_id, $categoryDir); $itemTPL = '<Item><ID>%s</ID><Name>%s</Name></Item>'; $items=''; foreach ($clist as $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 ($clist as $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 ($_secondCateorylist as $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 = "<".var_export($bookCache, true).";\n"; echo "\n建立缓存文件:".createFile(STORE_PATH, 'bookcache.php', $arrString); /** * 抓取书籍章节信息 * * @param array $bookIds 书籍章节信息 * * @return boolean 返回是否抓取成功 */ function getBookofChapter ($bookinfo,$chapters) { if (! is_array($chapters)) { return false; } $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 ($chapters as $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); } return true; } function getBook($conn_id,$_bookListDir){ $chapter=array(); $buff = ftp_nlist ( $conn_id, $_bookListDir ); if(is_array($buff)){ $resourceArray = array(); foreach ($buff as $key=>$value){ if(strstr( $value, '.txt' )){ }else{ $resourcesName = str_replace($_bookListDir.'\\', "", $value); $temp = preg_split ( '/\./',$resourcesName); $resourceArray[trim($temp[0])]=$resourcesName; } } foreach ($buff as $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('chapter index :'.implode(array_keys ($chapter), ',')); echo "\n"; return $chapter; } function getDirListFormFtp($conn_id, $categoryDir) { $categoryArray = array (); $dirs = getDirNameFormFtp ( $conn_id, $categoryDir ); //获取分类描述 foreach ( $dirs as $key => $value ) { $path = $categoryDir . '\\' . $value . '.txt'; $categoryArray [] = array ('name' => $value, 'detail' => getFileContentsFormFtp ( $conn_id, $path ) ); } return $categoryArray; } function getFileContentsFormFtp($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('error timeout:-----'); global $ftp_server; $conn_id = ftp_connect ( $ftp_server ); if (@ftp_login ( $conn_id, $ftp_user, $ftp_pass )) { echo "Connected as $ftp_user@$ftp_server\n"; } else { echo "Couldn't connect as $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('file name :'.$server_file.';content:'.$content); return $content; } function getDirNameFormFtp($conn_id, $dirString) { $buff = ftp_rawlist ( $conn_id, $dirString ); $dirs = array_filter ( $buff, "dirfilter" ); foreach ( $dirs as $key => $value ) { $temp = preg_split ( '/<DIR>/', $value ); $dirs [$key] = trim ( $temp [1] ); } asort($dirs , SORT_NUMERIC); return $dirs; } function dirfilter($var) { return (strstr ( $var, '<DIR>' )); } ftp_close ( $conn_id );
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php文件操作总结》、《PHP编码与转码操作技巧汇总》、《php面向对象程序设计入门教程》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月28日
2024年11月28日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]