去除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的FTP学习(一)[转自奥索]
Oct 09 PHP
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
Dec 11 PHP
使用eAccelerator加密PHP程序
Oct 03 PHP
elgg 获取文件图标地址的方法
Mar 20 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
May 07 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
THINKPHP内容分页代码分享
Jan 14 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 PHP
PHP 实现手机端APP支付宝支付功能
Jun 07 PHP
php多进程模拟并发事务产生的问题小结
Dec 07 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的图形函数中显示汉字
2006/10/09 PHP
为PHP初学者的8点有效建议
2010/11/20 PHP
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
php中return的用法实例分析
2015/02/28 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
详解React路由传参方法汇总记录
2020/11/29 Javascript
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
跟老齐学Python之dict()的操作方法
2014/09/24 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
python executemany的使用及注意事项
2017/03/13 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
Python使用re模块验证危险字符
2020/05/21 Python
python与pycharm有何区别
2020/07/01 Python
如何利用python生成MD5并去重
2020/12/07 Python
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
PHP笔试题
2012/02/22 面试题
介绍一下Linux文件的记录形式
2012/04/18 面试题
如何开发一个JQuery插件
2016/07/28 面试题
2014年化工厂工作总结
2014/11/25 职场文书
年会邀请函范文
2015/01/30 职场文书
圆明园观后感
2015/06/03 职场文书
python 爬取天气网卫星图片
2021/06/07 Python
Win11怎么修改电源模式?Win11修改电源模式的方法
2022/04/05 数码科技
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers