PHP递归遍历文件夹去除注释并压缩php源代码的方法示例


Posted in PHP onMay 23, 2018

本文实例讲述了PHP递归遍历文件夹去除注释并压缩代码的方法。分享给大家供大家参考,具体如下:

<?php
// ===================文件夹 递归 去除PHP注释并压缩=========================
header("content-type:text/html;charset=utf-8");
$dir = "D:\sound\admin--";  // 需要转换的文件路径。
$fdir = "D:\sound\admin";  // 最终要放到的位置。
$dir = str_replace('\\','/',$dir);
$fdir = str_replace('\\','/',$fdir);
if($dir == $fdir){
 echo "源文件与现在文件路径冲突,换一个路径吧";
 exit;
}
$arr = array($dir,$fdir);
ergodic($dir,$arr); // 递归的时候目录名一直是改变的。所以用一个数组另外存储两个路径,这样创建文件或者目录的时候就可以找到在那个目录下。
md($fdir);
function md($md){ // 创建目录
 if(!is_dir($md) && !empty($md) ){
    mkdir($md,0777);
 }
}
// 递归
function ergodic($dirname,$arr){
  if(is_dir($dirname)){
    $handle = opendir($dirname);
    $a = $arr[1].substr($dirname,strlen($arr[0]) );
    md($a);
    while($filename = readdir($handle)){  // 读取一个打开的文件名。
      if($filename != '.' && $filename != '..'){
        $dir = $dirname.'/'.$filename; // 拼接目录名
        if(is_dir($dir)){
          ergodic($dir,$arr);  // 递归
        }else{
          file_put_contents($a.'/'.$filename,replace_php_src($dir) );
          echo $dir."  去注释压缩完成!<br>";
        }
      }
    }
  }else{
    // 此处无用(因为来的都是目录),如果只转换一个文件,就可以这样使用。
   file_put_contents($arr[1].'/'.$dirname,replace_php_src($arr[0].'/'.$dirname) );
  }
}
// 去除注释并压缩,heredoc存在的时候去注释不压缩。
function replace_php_src($src){
  $contents = file_get_contents($src);
  $num = substr_count($contents,'<<<');  // heredoc 是否存在。
  $str = "";
  if($num > 0){  // heredoc 存在。只去除注释不压缩。
      $file = token_get_all($contents); // token_get_all() 将提供的源码按 PHP 标记进行分割.
      for ($i=0; $i < count($file); $i++) {
        if( is_string($file[$i]) ){
          $str .= $file[$i];
        }else{
           $name = token_name( $file[$i][0] ); // token_name() 获取提供的 PHP 解析器代号的符号名称.
            if($name == 'T_COMMENT' || $name == 'T_DOC_COMMENT' ){ // 去除注释
                continue;
            }else{
              $str .= $file[$i][1];
            }
        }
      }
  }else{
    $str = php_strip_whitespace($src); // 不存在 heredoc 。因为他会错误解析。
  }
  return $str;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一周让你学会PHP 不错的学习资料
Feb 06 PHP
PHP include_path设置技巧分享
Jul 03 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
Yii使用技巧大汇总
Dec 29 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
PHP实现将多个文件压缩成zip格式并下载到本地的方法示例
May 23 #PHP
PHP实现的mysql读写分离操作示例
May 22 #PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
May 21 #PHP
PHP+MariaDB数据库操作基本技巧备忘总结
May 21 #PHP
PhpStorm本地断点调试的方法步骤
May 21 #PHP
PHP自动识别当前使用移动终端
May 21 #PHP
PHP连接MySQL数据库并以json格式输出
May 21 #PHP
You might like
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
Php连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
Vue项目中如何引入icon图标
2018/03/28 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
python使用psutil模块获取系统状态
2016/08/27 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
python 对dataframe下面的值进行大规模赋值方法
2018/06/09 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
wxPython实现分隔窗口
2019/11/19 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
python中实现词云图的示例
2020/12/19 Python
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
工地安全标语
2014/06/07 职场文书
投资意向书
2014/07/30 职场文书
先进个人总结范文
2015/02/15 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
企业员工辞职信范文
2015/05/12 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
五年级作文之劳动作文
2019/11/12 职场文书