去除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 05 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
php setcookie函数的参数说明及其用法
Apr 20 PHP
ThinkPHP模板Switch标签用法示例
Jun 30 PHP
PHP之autoload运行机制实例分析
Aug 28 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
php比较相似字符串的方法
Jun 05 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
Dec 17 PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
php计算十二星座的函数代码
2012/08/21 PHP
php实现三级级联下拉框
2016/04/17 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
vue实现单选和多选功能
2017/08/11 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
JS设计模式之单例模式(一)
2017/09/29 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
python+django+rest框架配置创建方法
2019/08/31 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
Python中and和or如何使用
2020/05/28 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
班干部竞选演讲稿
2014/04/24 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
人事任命书范本
2015/09/21 职场文书