php 文件 文本操作

来源:互联网 发布:免费的网络摄像头 编辑:程序博客网 时间:2024/06/05 15:01
php文件操作

文件夹操作常用的几个

is_dir bool is_dir ( string $filename )如果文件名存在并且为目录则返回 TRUE。如果 filename 是一个相对路径,则按照当前工作目录检查其相对路径。

opendir resource opendir ( string $path [, resource $context ] ) 打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中.

readdir string readdir ( resource $dir_handle ) 返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。

closedir void closedir ( resource $dir_handle ) 关闭由 dir_handle 指定的目录流。流必须之前被 opendir() 所打开。

一个遍历文件夹打印所有文件的例子

$path = "web0721";function showFile($path,$l){$file_hander = opendir($path);while( ($file = readdir($file_hander)) != false ){if($file != "." && $file != ".."){ //每个文件夹下都有.(表示当前目录)   ..(上级目录)$new_path = $path."/".$file;if(is_dir($new_path)){echo $l."<strong style='color:#f00'>".$file."</strong><br>";showFile($new_path,$l."   ");}else{echo $l.$file."<br>";}}}closedir($file_hander);}showFile($path,"  ");

操作文件的常用的几个方法

file array file ( string $filename [, int $use_include_path [, resource $context ]] )

和 file_get_contents() 一样,只除了 file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败 file() 返回 FALSE。

file_get_contents string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )

和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents() 将返回 FALSE。

fopenresource fopen ( string $filename , string $mode [, bool $use_include_path [, resource $zcontext ]] )

fopen() 将 filename 指定的名字资源绑定到一个流上。如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。

如果 PHP 认为 filename 指定的是一个本地文件,将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的,因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。

如果 PHP 认为 filename 指定的是一个已注册的协议,而该协议被注册为一个网络 URL,PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了,PHP 将发出一个警告,而 fopen 的调用则失败制。

fopen() 中 mode 的可能值列表

mode

说明

'r'

只读方式打开,将文件指针指向文件头。

'r+'

读写方式打开,将文件指针指向文件头。

'w'

写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之

w+

读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

a

写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之

a+

a 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

 

fwriteint fwrite ( resource $handle , string $string [, int $length ] )

fwrite() 把 string 的内容写入 文件指针 handle 处。 如果指定了 length ,当写入了 length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况。

fwrite() 返回写入的字符数,出现错误时则返回 FALSE 。

fclosebool fclose ( resource $handle )

将 handle 指向的文件关闭 。 如果成功则返回 TRUE,失败则返回 FALSE .文件指针必须有效,并且是通过 fopen() 或 fsockopen() 成功打开的。

 

 

之前做个项目 做多国语言版本,用的php提取所有文件的中文,替换成php标记,然后将替换的中文全部保存在一个lang.php里面,然后再每个文件的头部引入lang.php

这样工作量就小了,  至于中文翻译英文,我用的是fiddler挂载的百度翻译首页,然后写的一段代码,可以批量翻译(先要翻译出给领导看,之后才会找专门的翻译);

下面是一个替换中文 创建lang.php文件的例子

 

<?phpheader("Content-Type: text/html; charset=utf-8");$root_path = "web0721";$lang = "<?php\r\n\$lang = array(\r\n";function openPath($path){if(!is_dir($path)){return false;}$dir_hander = opendir($path);while( ($file = readdir($dir_hander)) != false ){if($file != "." && $file != ".." ){$new_path = $path."/".$file;if(is_dir($new_path)){openPath($new_path);}else{$num  = strripos($file,".");$len  = strlen($file);$name = substr($file,0,$num);$suffix = substr($file,$num,$len-$num);if($suffix == ".php"){openFile($new_path,$name);}}}}closedir($dir_hander);}function openFile($file,$name){if(file_exists($file)){$content = file_get_contents($file);$pattern = "/[\x{4e00}-\x{9fa5}]+/u";preg_match_all($pattern,$content,$matches);$matches[0] = array_unique($matches[0]);$GLOBALS["lang"] = $GLOBALS["lang"]."  '".$name."'    =>    array(\r\n";foreach($matches[0] as $i => $value){$content = str_replace($value,"<?php echo \$lang['".$name."'][".$i."] ?>",$content);$GLOBALS["lang"] = $GLOBALS["lang"]."   '".$i."'    =>    '".$value."',\r\n";}$GLOBALS["lang"] = $GLOBALS["lang"]."  ),\r\n";$is = writeFile($file,$content);if($is){echo $file."--------------------------成功<br>";}else{echo $file."--------------------------失败<br>";}}}function writeFile($file,$content){if(file_exists($file)){$content = "<?php include(\"../lang.php\"); ?>\r\n".$content;$file_hander = fopen($file,"w+");$is = fwrite($file_hander,$content);fclose($file_hander);if($is){return true;}else{return false;}}return false;}openPath($root_path);$lang = $lang.")\r\n?>";$file_hander = fopen("lang.php","w+");fwrite($file_hander,$lang);fclose($file_hander);?>


 用exec和yui的东西  还可以压缩 合并js  css 也很方便呀  我在工作中是这么弄的

例子

    class mergeCompress    {        var $merge_arr;        var $commpress_arr;        var $type;        var $file_dir;        //压缩合并后的目录        var $file_name;       //压缩合并后的文件名        var $path_jar;        // yui jar的路径        var $is_del = true;   //压缩后的零散文件是否删除掉        var $errs = array();        public function __construct($commpress_arr=array(),$merge_arr=array(),$type="js",$file_dir="",$file_name="",$path_jar=""){            $this->type = $type;            $this->commpress_arr = $commpress_arr;            $this->merge_arr = $merge_arr;            $this->file_dir  = $file_dir;            $this->file_name = $file_name;            $this->path_jar  = $path_jar;        }        public function exec(){            $new_compress_arr = $this->compress();            $this->merge_arr = array_merge($this->merge_arr,$new_compress_arr);            $this->merge();                        $this->printErr();                        if($this->is_del){                foreach($new_compress_arr as $i=>$url){                    unlink($url);                }            }                    }        public function compress(){            $new_compress_arr = array();            $temp = "java -jar {jar_path} --type {type} --charset utf-8 {source} > {compressor_source}";            $temp = str_replace("{jar_path}",$this->path_jar,$temp);            $temp = str_replace("{type}",$this->type,$temp);            $type = $this->type;            $file_dir = $this->file_dir;            foreach($this->commpress_arr as $i => $val){                if(!file_exists($val)){                    array_push($this->errs,$val."    Does not exist!!!! ");                    continue;                }                $cmd = str_replace("{source}",$val,$temp);                $new_name = basename($val);                $new_name = substr($new_name,0,strrpos($new_name,".")).".min.".$type;                $file_new_name = $file_dir."/".$new_name;                $cmd  = str_replace("{compressor_source}",$file_new_name,$cmd);                $arr  = array();                exec($cmd,$arr,$is);                if($is != 0){                    array_push($this->errs,$val."    compress fail!!!! ");                }                array_push($new_compress_arr,$file_new_name);            }            return $new_compress_arr;        }        public function merge(){            $content="";            $file_name = $this->file_dir."/".$this->file_name;                        foreach($this->merge_arr as $i=>$url){                if(!file_exists($url)){                    array_push($this->errs,$url."    Does not exist!!!! ");                    continue;                }                                $content=$content.file_get_contents($url)."\n\r";            }            $hd = fopen($file_name,"w+");            $is = fwrite($hd,$content);            fclose($hd);            if(!$is){                array_push($this->errs,$file_name."    merge fail!!!!! ");            }        }        public function printErr(){            $errs = $this->errs;            $len = count($errs);            if($len == 0){                echo "OK !!!!!!!!";            }else{                foreach($errs as $i=>$err){                    echo $err."<br><br><br>";                }            }        }    }//调用            $commpress_arr = array(                        "f2e/assist/js/jquery/merger.js",                        "f2e/assist/js/business/broker.js",                        "f2e/assist/js/business/http.js",                        "f2e/assist/js/components/components.js",                        "f2e/assist/js/models/model.js",                        "f2e/assist/js/models/vo.js",                        "f2e/assist/js/controllers/moduleController.js",                        "f2e\assist\js\projectInit.js",                    );            $merge_arr = array(                            "f2e/assist/js/jquery/jquery-1.7.1.min.js",                        "f2e/assist/js/jquery/jquery-ui-1.8.20.custom.min.js",                        "f2e/assist/js/jquery/jquery-jtemplates.js",                    );            $type ="js";            $file_dir  = "f2e/assist/js/compression";            $file_name = "merge_all.js";             $js = new mergeCompress($commpress_arr,$merge_arr,$type,$file_dir,$file_name,$path_jar);            $js->exec();