PHP对文件的操作方法

来源:转载

php对文件的操作方法:

<?phpheader("Content-type: text/html; charset=utf-8");/********************1、写入内容到文件,追加内容到文件2、打开并读取文件内容********************/ $file = 'log.txt';//要写入文件的文件名(可以是任意文件名),如果文件不存在,将会创建一个 $content = "第一次写入的内容/n"; if($f = file_put_contents($file, $content,FILE_APPEND)){// 这个函数支持版本(PHP 5) echo "写入成功。<br />"; } $content = "第二次写入的内容"; if($f = file_put_contents($file, $content,FILE_APPEND)){// 这个函数支持版本(PHP 5) echo "写入成功。<br />"; } if($data = file_get_contents($file)){; // 这个函数支持版本(PHP 4 >= 4.3.0, PHP 5) echo "写入文件的内容是:$data"; }?>

注意:log.txt 这个文件web服务器用户一定要有读写权限(nginx下是nginx用户,apache下默认用户是daemon),一般需要把这个文件设置为777属性。

php file_put_contents 追加数据
int file_put_contents( string filename, string data [, int flags [, resource context]] )
和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
filename 要被写入数据的文件名。
data 要写入的数据。类型可以是 string,array (但不能为多维数组)或者是 stream 资源。
flags flags 可以是 FILE_USE_INCLUDE_PATH,FILE_APPEND 和/或 LOCK_EX(获得一个独占锁定),使用FILE_USE_INCLUDE_PATH 时要特别谨慎。
context 一个 context 资源。
该函数将返回写入到文件内数据的字节数。
file_put_contents("rote.txt","cc ",FILE_APPEND);
‍第三个参数实现将内容追加到文件的后面,如果没有这个参数会直接覆盖以前的数据。


常用日志的保存方法:

/** * ****************** * 1、写入内容到文件,追加内容到文件 * 2、打开并读取文件内容 * ******************* */function save_log($path, $msg){ if (! is_dir($path)) { mkdir($path); } $filename = $path . '/' . date('YmdHi') . '.txt'; $content = date("Y-m-d H:i:s")."/r/n".$msg."/r/n /r/n /r/n "; file_put_contents($filename, $content, FILE_APPEND);}save_log('./log', '日志内容字符串');

或者:

/** * 日志保存函数 * 这里我是按照每周一生成一个新的文件, * 每一个操作类型分为一个文件夹, * 存的文件扩展名为 .json * @param string 文件路径 * @param string 文件类型 **/function save_log($path,$fileType,$operationName){ $date=new DateTime(); $date->modify('this week'); $first_day=$date->format('Y-m-d');//获取每周一的日期 $now = date("Y-m-d H:i:s");//操作日期 $IP = $_SERVER['REMOTE_ADDR'];//操作的Ip $user = session('admin_name');//操作的用户 $str = "{/"dateTime/":/"".$now."/",/"IP/":/"".$IP."/",/"user/":/"".$user."/"},".PHP_EOL;//PHP_EOL 满足windows、linux、MAC环境下的换行 $pathName = $path."/".$fileType."/".$first_day.".json";//完整路径名 file_put_contents($pathName,$str,FILE_APPEND);//FILE_APPEND 不删除原来文件的情况下插入内容}

逐行读取文件中的内容:

<?php$c = getLine('./a.txt', 10); // 读取a.txt文件第10行内容echo $c;/** * 获取指定行内容 * * @param $file 文件路径 * @param $line 行数 * @param $length 指定行返回内容长度 */function getLine($file$line$length = 4096){    $returnTxt = null; // 初始化返回    $i = 1; // 行数     $handle = @fopen($file"r");    if ($handle) {        while (!feof($handle)) {            $buffer fgets($handle$length);            if($line == $i$returnTxt $buffer;            $i++;        }        fclose($handle);    }    return $returnTxt;}

或者:

假设有user.txt文件如下:

123456789101112  user01                                                                                        user02user03user04user05user06user07user08user09user10user11user12

逐行读取user.txt并写入数组的方法如下:

123456789101112  $file= fopen("username.txt","r");$user=array();$i=0;//输出文本中所有的行,直到文件结束为止。while(!feof($file)){ $user[$i]=fgets($file);//fgets()函数从文件指针中读取一行                                     $i++;}fclose($file);$user=array_filter($user);print_r($user);



分享给朋友:
您可能感兴趣的文章:
随机阅读: