去除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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
php array_merge下进行数组合并的代码
Jul 22 PHP
xml在joomla表单中的应用详解分享
Jul 19 PHP
PHP利用str_replace防注入的方法
Nov 10 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
搭建基于Docker的PHP开发环境的详细教程
Jul 01 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
Yii2配置Nginx伪静态的方法
May 05 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 01 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 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 日志缩略名的创建函数代码
2010/05/26 PHP
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
php 判断数组是几维数组
2013/03/20 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
类之Prototype.js学习
2007/06/13 Javascript
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
react+redux的升级版todoList的实现
2017/12/18 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
python3 爬取图片的实例代码
2018/11/06 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
django表单的Widgets使用详解
2019/07/22 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
python实现画图工具
2020/08/27 Python
酒吧副总经理岗位职责
2013/12/10 职场文书
课程改革实施方案
2014/03/16 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python