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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
php printf输出格式使用说明
Dec 05 PHP
php中过滤非法字符的具体实现
Oct 29 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
typecho插件编写教程(二):写一个新插件
May 28 PHP
PHP获取Exif缩略图的方法
Jul 13 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
PHP利用Socket获取网站的SSL证书与公钥
Jun 18 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 PHP
php与阿里云短信接口接入操作案例分析
May 27 PHP
PHP与Web页面的交互示例详解一
Aug 04 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
繁体中文转换为简体中文的PHP函数
2006/10/09 PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
数据库查询记录php 多行多列显示
2009/08/15 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
php实现socket推送技术的示例
2017/12/20 PHP
php依赖注入知识点详解
2019/09/23 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
AngularJS HTML DOM详解及示例代码
2016/08/17 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
Easyui和zTree两种方式分别实现树形下拉框
2017/08/04 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
python中xlrd模块的使用详解
2021/02/01 Python
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
2013英文求职信模板范文
2013/11/15 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
故宫的导游词
2015/01/31 职场文书
致接力运动员加油稿
2015/07/21 职场文书
初中数学教学随笔
2015/08/15 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS