文件操作实例
<?php /** * Created by PhpStorm. * User: tiankang * Date: 2018/4/21 * Time: 14:03 */ //1.创建或打开一个本地文件 //以只读方式打开文件,不会创建新文件 r+(读写),指针在开头 //$fl = fopen('file2.txt','r') or die('打开失败'); //以w(只写)方式打开文件,如文件不存在则创建, w+(读写),指针在开头 //$fl = fopen('file5.txt','w') or die('打开失败'); //以a(追加只写)方式打开文件,如文件不存在则创建, 类似: a+(追加读写),指针在未尾 //$fl = fopen('file3.txt','a') or die('打开失败了'); //2.打开一个远程文件 $fl = fopen('http://www.runoob.com/php/php-file.html','r') or die('失败'); //feof()函数检测是否已经到达文件末尾 在循环遍历未知长度的数据时,feof()函数很有用 if (feof($fl)){ echo '文件结尾'; } //3.读取文件到浏览器 //从文件指针处读取一行并自动下移,fgets()函数用于从文件中逐行读取文件 //while($s = fgets($fl)){ // print $s; //} //fgetss()可过滤掉所有的HTML标签 //4. 逐字符读取文件: //while(!feof($fl)){ // echo fgetc($fl); // //} //将整个页面读入到一个字符串,这在抓取其它网站内容时很有用,配合过滤正则 //file_get_contens($filename)返回字符串 //$content = file_get_contents('http://www.php.cn'); //// echo '文件大小: '.strlen($content).' 字节', '<br>'; //echo '文件大小:'.strlen($content).'字节','<br>'; // //if (strlen($content)>0){ // echo $content; //} //5. 把整个文件读入到数组中,用换行符进行分割 //$arr = file('maxim.txt'); // //foreach ($arr as $key => $value){ // // echo '<span style="color: red">格言'.($key+1).': </span>'.$value.'<hr>'; // //} // shuffle($arr),随机打乱一个数组,返回true/false //if (shuffle($arr)){ // echo current($arr); // //} // //fclose($fh); //目录遍历操作 //传统目录函数 //第一步:opendir('目录')打开目录,成功返回资源,失败返回false //第二步:readdir($dir)读取目录内容,成功 //返回目录名,失败返回false //第三步:colsedir($dir)关闭当前目录 //$dir = opendir('../0418源码') or die('打开失败'); //while(false != ($file = readdir($dir))){ // // if ($file !='.' && $file !='..'){ // print $file.'<br>'; // } //} //closedir($dir); //echo '<hr style="color:red;">'; //第二种方式 把目录内容保存到数组中进行遍历 //第一步:scandir() //第二步:遍历目录数组 //$fileArr = scandir('../0417源码'); //foreach ($fileArr as $key=>$value){ // if ($value != '.' && $value != '..'){ // echo $value,'<br>'; // // } //} //目录迭代器 //第一种方式: DirectorInterator: //第一步:实例化目录对象 //第二步:遍历目录 $file = new DirectoryIterator('../0416源码'); foreach ($file as $dir){ print $file->getPathname()."<br>"; if (!$dir->isDot()){ //仅过滤掉点目录文件,目录仍保留 echo $file->getPathname(),'<br>'; } } echo '<hr style="color: red">'; //第二种方式 //递归目录迭代器 RecursiveDirectoryIterator //重复递归迭代器 RecursiveIteratorIterator $dir = new RecursiveDirectoryIterator('../0417源码'); foreach (new RecursiveIteratorIterator($dir) as $file){ if ($file ->isFile()){//只显示文件 echo $file->getPathname(),'<br>'; } } //1.分解文件名 //系统常量 echo __FILE__ ,'<br>'; //获取文件路径 //1.获取文件名 echo '文件名:' .basename(__FILE__).'<br>'; //2.获取目录名 echo '目录名:'.dirname(__FILE__).'<br>'; //php5.3+推荐使用常量__DIR__代替dirname() echo __DIR__, '<br>'; //3.pathinfo():将目录名,文件名,扩展或解析到一个数组中 $pathInfo = pathinfo(__FILE__); foreach ($pathInfo as $key=>$value){ echo $key.'->'.$value , '<br>'; } //系统提供一个常量:DIRECTORY_SEPARATOR,可以根据系统自动确定路径分隔符类型 $path = dirname(__FILE__).DIRECTORY_SEPARATOR.basename(__FILE__); echo $path,'<br>'; //删除文件 //unlink('file2.txt') or die('删除失败'); //复制文件 copy('maxim.txt','../0419源码/maxim01.txt') or die('复制失败'); //更名 rename('maxim01.txt','格言.txt') or die('重命名失败'); //创建目录 //mkdir('admin1'); //移动文件 //rename('格言.txt','/admin1/'); //删除目录 //rmdir('admin1');
运行实例 »
点击 "运行实例" 按钮查看在线实例
文件上传
实例
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <form action="<?php htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data"> <fieldset> <legend align="center"> 文件上传 </legend> <label for="file">文件名:</label> <input type="file" name="file" id="file"><br> </fieldset> <p align="center"> <input type="submit" name="submit" value="提交"> </p> </form> </body> </html> <?php /** * Created by PhpStorm. * User: tiankang * Date: 2018/4/23 * Time: 15:56 */ /* * $_FILES["file"]["name"] - 上传文件的名称 $_FILES["file"]["type"] - 上传文件的类型 $_FILES["file"]["size"] - 上传文件的大小,以字节计 $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称 $_FILES["file"]["error"] - 由文件上传导致的错误代码 */ //允许上传的图片的后缀 $allowedExts = array('gif','jpeg','jpg',); //把选中的文件名拆成数组 $tempArr = explode('.',$_FILES['file']['name']); //取出后缀名 $extensionName = end($tempArr); //判断选中的文件格式是否符合要求 if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/png"))&& in_array($extensionName,$allowedExts)){ if ($_FILES['file']['error']>0){ echo '错误'.$_FILES['file']['error'].'<br>'; }else{ echo '上传文件名:'.$_FILES['file']['name'].'<br>'; echo '文件类型:'.$_FILES['file']['type'].'<br>'; echo '文件大小:'.($_FILES['file']['size']/1024).'kb<br>'; echo '文件临时存贮的位置:'.$_FILES['file']['tmp_name'].'<br>'; //判断当前目录下的upload目录是否存在文件 ///如果没有upload目录,就需要创建它, if (file_exists('upload/'.$_FILES['file']['name'])){ echo $_FILES['file']['name'].'文件已经存在'; }else{ //如果upload目录不存在该文件则将文件上传到upload目录下 move_uploaded_file($_FILES['file']['tmp_name'],'upload/'.$_FILES['file']['name']); echo '文件存储在:'.'upload/'.$_FILES['file']['name']; //上传成功 echo "<script>alert('文件上传成功')</script>"; } } }else{ //上传成功 echo "<script>alert('非法的文件格式')</script>"; echo '非法的文件格式'; }
运行实例 »
点击 "运行实例" 按钮查看在线实例