去除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 相关文章推荐
一个可查询所有表的“通用”查询分页类
Oct 09 PHP
php绝对路径与相对路径之间关系的的分析
Mar 03 PHP
php开发文档 会员收费1期
Aug 14 PHP
php中用加号与用array_merge合并数组的区别深入分析
Jun 03 PHP
php页面缓存方法小结
Jan 10 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
php上传图片并压缩的实现方法
Dec 22 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
php微信开发之关注事件
Jun 14 PHP
laravel框架的安装与路由实例分析
Oct 11 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加密解密类代码
2011/11/27 PHP
php中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
js实现批量删除功能
2020/08/27 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
Selenium的使用详解
2018/10/19 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
python3中sys.argv的实例用法
2020/04/24 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
学生宿舍管理制度
2014/01/30 职场文书
销售经理竞聘书
2014/03/31 职场文书
离婚协议书范文2014
2014/10/16 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
员工工作表扬信
2015/05/05 职场文书
小学教师见习总结
2015/06/23 职场文书
2016新年感言
2015/08/03 职场文书
创业计划书之网吧
2019/10/10 职场文书