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制作静态网站的模板框架(二)
Oct 09 PHP
实现dedecms全站URL静态化改造的代码
Mar 29 PHP
PHP4中session登录页面的应用
Jul 25 PHP
解析php中的escape函数
Jun 29 PHP
浅析php中如何在有限的内存中读取大文件
Jul 02 PHP
Drupal读取Excel并导入数据库实例
Mar 02 PHP
PHP使用Alexa API获取网站的Alexa排名例子
Jun 12 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
SESSION存放在数据库用法实例
Aug 08 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 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
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
jQuery实现跨域
2015/02/03 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
python Tornado框架的使用示例
2020/10/19 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
办公室保洁员岗位职责
2013/12/02 职场文书
春节联欢会策划方案
2014/05/16 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
如何做好工作总结!
2019/04/10 职场文书
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers