去除php注释和去除空格函数分享


Posted in PHP onMarch 13, 2014

虽然php5中已有php_strip_whitespace方法可以返回删除注释和空格后的PHP源码的功能,为了学习,这里为大家提供一个自己的方法,也可以去除代码中的空白和注释,代码如下:

/**
 * 去除代码中的空白和注释
 * @param string $content 代码内容
 * @return string
 */
function strip_whitespace($content) {
    $stripStr   = '';
    //分析php源码
    $tokens     = token_get_all($content);
    $last_space = false;
    for ($i = 0, $j = count($tokens); $i < $j; $i++) {
        if (is_string($tokens[$i])) {
            $last_space = false;
            $stripStr  .= $tokens[$i];
        } else {
            switch ($tokens[$i][0]) {
                //过滤各种PHP注释
                case T_COMMENT:
                case T_DOC_COMMENT:
                    break;
                //过滤空格
                case T_WHITESPACE:
                    if (!$last_space) {
                        $stripStr  .= ' ';
                        $last_space = true;
                    }
                    break;
                case T_START_HEREDOC:
                    $stripStr .= "<<<THINK\n";
                    break;
                case T_END_HEREDOC:
                    $stripStr .= "THINK;\n";
                    for($k = $i+1; $k < $j; $k++) {
                        if(is_string($tokens[$k]) && $tokens[$k] == ';') {
                            $i = $k;
                            break;
                        } else if($tokens[$k][0] == T_CLOSE_TAG) {
                            break;
                        }
                    }
                    break;
                default:
                    $last_space = false;
                    $stripStr  .= $tokens[$i][1];
            }
        }
    }
    return $stripStr;
}
PHP 相关文章推荐
PHP脚本的10个技巧(7)
Oct 09 PHP
PHP开发中常用的8个小技巧
Aug 27 PHP
php遍历数组的方法分享
Mar 22 PHP
php设置静态内容缓存时间的方法
Dec 01 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
Dec 28 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
php使用自定义函数实现汉字分割替换功能示例
Jan 30 PHP
PHP微信PC二维码登陆的实现思路
Jul 13 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 PHP
PHP生成随机数的方法总结
Mar 01 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP类的自动加载机制实现方法分析
Jan 10 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
Mar 13 #PHP
zf框架的数据库追踪器使用示例
Mar 13 #PHP
zf框架的校验器InArray使用示例
Mar 13 #PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 #PHP
zf框架的registry(注册表)使用示例
Mar 13 #PHP
zf框架的Filter过滤器使用示例
Mar 13 #PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 #PHP
You might like
使用php shell命令合并图片的代码
2011/06/23 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
python编程开发之类型转换convert实例分析
2015/11/13 Python
利用python代码写的12306订票代码
2015/12/20 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
Python Process多进程实现过程
2019/10/22 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
护理自我鉴定范文
2013/10/06 职场文书
竞聘演讲稿范文
2014/01/12 职场文书
综艺节目策划方案
2014/06/13 职场文书
元旦晚会活动总结
2014/07/09 职场文书
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
乌镇导游词
2015/02/02 职场文书
西柏坡导游词
2015/02/05 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
小学生安全保证书
2015/05/09 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android