去除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与MySQL交互使用详解
Oct 09 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 PHP
PHP将字符分解为多个字符串的方法
Nov 22 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
Feb 04 PHP
Yii2 加载css、js 载静态资源的方法
Mar 10 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 PHP
laravel使用redis队列实例讲解
Mar 23 PHP
PHP实现考试倒计时功能代码
Apr 16 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/08/08 PHP
php中的ini配置原理详解
2014/10/14 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
Javascript 圆角div的实现代码
2009/10/15 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
浅析Python中的多进程与多线程的使用
2015/04/07 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
使用Python发现隐藏的wifi
2020/03/04 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
python deque模块简单使用代码实例
2020/03/12 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
EJB与JAVA BEAN的区别
2016/08/29 面试题
2014大学班主任工作总结
2014/11/08 职场文书
2015年招聘工作总结
2014/12/12 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
python爬取新闻门户网站的示例
2021/04/25 Python
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript