php 文件 文本操作
来源:互联网 发布:免费的网络摄像头 编辑:程序博客网 时间:2024/06/05 15:01
文件夹操作常用的几个
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 的调用则失败制。
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();
- php 文件 文本操作
- 批量替换文本内容-PHP操作文件方法
- PHP文本操作类
- PHP文本操作_FILES
- PHP文本操作类
- 文本txt文件操作
- php操作php文件
- text.class.php.php文本操作类
- wix 操作 ini 文本 文件
- 【php】目录操作 文件操作
- PHP操作文件问答
- PHP文件操作类
- PHP操作文件问答
- php文件操作
- PHP文件操作
- php写文件操作
- php文件操作
- PHP 文件读写操作
- LCS最长公共子串
- WPF Treeview的问题
- JATMI Programming
- 守护进程概念介绍
- FFMPEG库压缩视频
- php 文件 文本操作
- Yum Install Google Chrome on Fedora 16
- 图片太大图片撑破页面变形的解决方法
- 我的代码,成就感。。。
- ASP.NET C# 通过URL加密解密传输数据
- 守护进程实现
- TCP/ip 第三天
- vector::erase()方法的详细介绍及问题解答
- SERV-U服务器状态信息符列表