去除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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
基于数据库的在线人数,日访问量等统计
Oct 09 PHP
利用PHP实现与ASP Banner组件相似的类
Oct 09 PHP
PHP 内存缓存加速功能memcached安装与用法
Sep 03 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
Jun 14 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
php常用的url处理函数总结
Nov 19 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 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 进程锁定问题分析研究
2009/11/24 PHP
PHPEXCEL 使用小记
2013/01/06 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
jquery批量控制form禁用的代码
2013/08/06 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
Python网络爬虫实例讲解
2016/04/28 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
python基于property()函数定义属性
2020/01/22 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
网上卖盒饭创业计划书范文
2014/02/07 职场文书
促销活动总结
2014/04/28 职场文书
心理咨询承诺书
2014/05/20 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
食品安全承诺书范文
2014/08/29 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
2015年见习期工作总结
2014/12/12 职场文书
2015年营销工作总结范文
2015/04/23 职场文书