去除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 相关文章推荐
《APMServ 5.1.2》使用图解
Oct 23 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
php简单开启gzip压缩方法(zlib.output_compression)
Apr 13 PHP
在PHP中使用redis
Nov 04 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 PHP
通过PHP实现用户注册后邮箱验证激活
Nov 10 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
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
php字符串操作常见问题小结
2016/10/11 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
JS的document.all函数使用示例
2013/12/30 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
python中for语句简单遍历数据的方法
2015/05/07 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
DBA的职责都有哪些
2012/05/16 面试题
.NET程序员的数据库面试题
2012/10/10 面试题
linux面试题参考答案(4)
2014/09/21 面试题
社区交通安全实施方案
2014/03/22 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
个性车贴标语
2014/06/24 职场文书
人民调解协议书范本
2014/10/11 职场文书
银行竞聘报告范文
2014/11/06 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
mysql数据库如何转移到oracle
2022/12/24 MySQL
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS