去除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
Dec 14 PHP
php 远程图片保存到本地的函数类
Dec 08 PHP
php 正则 过滤html 的超链接
Jun 02 PHP
php Sql Server连接失败问题及解决办法
Aug 07 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
Jun 24 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
再推荐十款免费的php开发工具
Nov 09 PHP
php数组冒泡排序算法实例
May 06 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
PHP实现对图片的反色处理功能【测试可用】
Feb 01 PHP
PHP parse_ini_file函数的应用与扩展操作示例
Jan 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通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
Jquery ui css framework
2010/06/28 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
采用call方式实现js继承
2014/05/20 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
python性能测试工具locust的使用
2020/12/28 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
2014大学生全国两会学习心得体会
2014/03/13 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
武当山导游词
2015/02/03 职场文书
电气工程师岗位职责
2015/02/12 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
学校运动会感想
2015/08/10 职场文书