去除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函数
Jan 11 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
php 判断数组是几维数组
Mar 20 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
Jun 27 PHP
php生成年月日下载列表的方法
Apr 24 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 14 PHP
PHP项目多语言配置平台实现过程解析
May 18 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
zf框架的数据库追踪器使用示例
2014/03/13 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
php接口隔离原则实例分析
2019/11/11 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
跟老齐学Python之变量和参数
2014/10/10 Python
Python的函数的一些高阶特性
2015/04/27 Python
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
python杀死一个线程的方法
2015/09/06 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
《湘夫人》教学反思
2014/02/21 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
教师远程研修感悟
2015/11/18 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
常用的Python代码调试工具总结
2021/06/23 Python
JavaScript中isPrototypeOf函数
2021/11/07 Javascript