去除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+java实现自动新闻滚动窗口
Oct 09 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
具有时效性的php加密解密函数代码
Jun 19 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
Jul 03 PHP
php curl_init函数用法
Jan 31 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
php提交post数组参数实例分析
Dec 17 PHP
PHP加密解密实例分析
Dec 25 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
php版微信公众号接口实现发红包的方法
Oct 14 PHP
php 5.4 全新的代码复用Trait详解
Jan 05 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
Feb 15 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的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
js 判断 enter 事件
2009/02/12 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
python将字符串转换成数组的方法
2015/04/29 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
Python将DataFrame的某一列作为index的方法
2018/04/08 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
python输入中文的实例方法
2020/09/14 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
优秀毕业生事迹材料
2014/02/12 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
小学班主任个人总结
2015/03/03 职场文书
创业计划书之服装
2019/10/07 职场文书