去除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 相关文章推荐
ADODB结合SMARTY使用~超级强
Nov 25 PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
ThinkPHP中U方法的使用浅析
Jun 13 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
教大家制作简单的php日历
Nov 17 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
php中static 静态变量和普通变量的区别
Dec 01 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
Nov 03 PHP
php伪静态验证码不显示的解决方案
Sep 26 PHP
Laravel框架源码解析之反射的使用详解
May 14 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
phpMyAdmin 安装及问题总结
2009/05/28 PHP
PHP写杨辉三角实例代码
2011/07/17 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
PHP微信支付开发实例
2016/06/22 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
php中的钩子理解及应用实例分析
2019/08/30 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
Python 初始化多维数组代码
2008/09/06 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
python中os包的用法
2020/06/01 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
学生会主席就职演讲稿
2014/01/14 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
庆元旦迎新年广播稿
2014/02/18 职场文书
岗位职责怎么写
2014/03/14 职场文书
英语求职信范文
2014/05/23 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
三峡大坝导游词
2015/01/31 职场文书
大学军训决心书
2015/02/05 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
Python中else的三种使用场景
2021/06/16 Python
springboot实现string转json json里面带数组
2022/06/16 Java/Android