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去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
Jan 05 PHP
PHP中__autoload和Smarty冲突的简单解决方法
Apr 08 PHP
PHP性能优化大全(php.ini)
May 20 PHP
PHP实现文件上传下载实例
Oct 18 PHP
php 使用redis锁限制并发访问类示例
Nov 02 PHP
基于php实现的验证码小程序
Dec 13 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
初识Node.js
2014/09/03 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
vue实现简单的日历效果
2020/09/24 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
Django实现全文检索的方法(支持中文)
2018/05/14 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
详解python中各种文件打开模式
2020/01/19 Python
Python实现新型冠状病毒传播模型及预测代码实例
2020/02/05 Python
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
临床医学应届生求职信
2013/11/06 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
学习党课思想汇报
2013/12/29 职场文书
上课打牌的检讨书
2014/02/15 职场文书
商场主管竞聘书
2014/03/31 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
书香家庭事迹材料
2014/05/09 职场文书
店面出租协议书范本
2014/11/28 职场文书
结婚通知短信大全
2015/04/17 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书