去除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程序中的常见漏洞进行攻击(下)
Oct 09 PHP
用ODBC的分页显示
Oct 09 PHP
php读取excel文件的简单实例
Aug 26 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
Yii2中关联查询简单用法示例
Aug 10 PHP
php连接sftp的作用以及实例代码
Sep 23 PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 PHP
php把文件设置为插件的技巧方法
Feb 03 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
如何重写Laravel异常处理类详解
Dec 20 PHP
phpquery中文手册
Mar 18 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
Terran建筑一览
2020/03/14 星际争霸
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
dwr spring的集成实现代码
2009/03/22 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
python爬虫使用cookie登录详解
2017/12/27 Python
python 产生token及token验证的方法
2018/12/26 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
python中几种自动微分库解析
2019/08/29 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
优秀的导游求职信范文
2014/04/06 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python