为了处理方便,我利用 fgets() 定义了一个函数,可将文件内容读入到一个数组,文件第 i 行对应数组第 i 个元素(index 是 i-1)。下面是源代码
function file2array($filename){ // read a file into an array // each element of the array is a line of file // also use explode(\r\n, file_get_contents($filename)) $f = fopen($filename,r) or die(unable to open the file ' . $filename . '!); $array=array(); while(!feof($f)) { array_push($array, str_replace(\r\n,,fgets($f)));}fclose($f);return $array;}
我用
str_replace(\r\n,,fgets($f))
的原因是,fgets 会把换行符也读入进来,可以用 count() 检验字符串的长度,会发现读入的每一行都文件中对应的行多了两个字符。等价的程序是
explode(\r\n, file_get_contents($filename))
用下面的代码可以将数组还原为(写入)文件。
function array2file($array, $filename, $mode=w){ // write an array (1-dim) in a file $f = fopen($filename, $mode) or die(unable to open the file ' . $filename . '!); // $f = savefopen($filename, $mode); if (! empty($array)) { $first=array_shift($array); fwrite($f, $first); foreach ($array as $line) { fwrite($f, \r\n . $line); } } fclose($f);}
我还写了一些简单有用的文件操作函数,供大家使用。
function file2str($filename){ // read a file into a string $f = fopen($filename,r); $str=; while(!feof($f)) { $str .= fgets($f);}fclose($f);return $str;}function fpush($filename, $arr){ $f=fopen($filename, a); foreach ($arr as $str) { fwrite($f, nl . $str); // nl == \r\n } fclose($f);}function fnl($filename){ // add a new line \r\n in the file $f=fopen($filename, a); fwrite($f, nl); fclose($f);}function fclear($filename){ // clear a file file_put_contents($filename, );}function fempty($filename){ // is the file empty or not? $f = fopen($filename,r); fgetc($f); if (feof($f)) { return true;} else { return false;} fclose($f);}
以上就介绍了php 文件读入到数组,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。