去除php注释和去除空格函数分享

 更新时间:2014年03月13日 10:12:15   作者:  
这篇文章主要介绍了去除php注释和去除空格函数,php5中已提供相同功能的函数,这里只为学习PHP,需要的朋友可以参考下

虽然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;
}

相关文章

  • Yii框架引用插件和ckeditor中body与P标签去除的方法

    Yii框架引用插件和ckeditor中body与P标签去除的方法

    这篇文章主要介绍了Yii框架引用插件和ckeditor中body与P标签去除的方法,结合实例形式分析了Yii框架中引入插件的步骤、实现方法与相关注意事项,需要的朋友可以参考下
    2017-01-01
  • yii分页组件用法实例分析

    yii分页组件用法实例分析

    这篇文章主要介绍了yii分页组件用法,结合实例形式较为详细的分析了yii分页组件的调用及具体的分页显示实现技巧,需要的朋友可以参考下
    2015-12-12
  • Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建

    Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建

    这篇文章主要介绍了Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • laravel 中repository模式使用详解

    laravel 中repository模式使用详解

    这篇文章主要介绍了laravel repository模式使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Yii查询生成器(Query Builder)用法实例教程

    Yii查询生成器(Query Builder)用法实例教程

    这篇文章主要介绍了Yii查询生成器(Query Builder)用法,包括了各种常见的查询操作,需要的朋友可以参考下
    2014-09-09
  • Codeigniter实现多文件上传并创建多个缩略图

    Codeigniter实现多文件上传并创建多个缩略图

    这篇文章主要介绍了Codeigniter实现多文件上传并创建多个缩略图,需要的朋友可以参考下
    2014-06-06
  • php获取301跳转URL简单实例

    php获取301跳转URL简单实例

    这篇文章主要介绍了php获取301跳转URL简单实例,有需要的朋友可以参考一下
    2013-12-12
  • thinkPHP5项目中实现QQ第三方登录功能

    thinkPHP5项目中实现QQ第三方登录功能

    这篇文章主要介绍了thinkPHP5项目中实现QQ第三方登录功能,结合实例形式较为详细的分析了修改QQ登陆接口并整合进thinkPHP5项目中的具体步骤与相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • PHP二维码的生成与识别案例

    PHP二维码的生成与识别案例

    这篇文章主要介绍了PHP二维码的生成与识别案例,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 使用phpunit进行接口自动化测试

    使用phpunit进行接口自动化测试

    下面小编就为大家分享一篇使用phpunit进行接口自动化测试,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03

最新评论