去除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;
}

(0)

相关推荐

  • php删除左端与右端空格的方法

    本文实例讲述了php删除左端与右端空格的方法.分享给大家供大家参考.具体方法如下: 在php中删除函数比js要具体很多,除了trim()函数,还有ltrim()和rtrim()函数,他们分别要删除前后左右的空格了,除了这三个函数还可以使用正则删除. ltrim()函数:ltrim($str, $charlist) $str表示被处理的字符串,$charlist是要删除的特殊字符,若为空则去除左端的空格,代码如下: 复制代码 代码如下: <?php   $t=" ...I'm Jacky..

  • yiic命令时提示“php.exe”不是内部或外部命令的解决方法

    本文实例讲述了yiic命令时提示"php.exe"不是内部或外部命令的解决方法,分享给大家供大家参考.具体方法如下: 在CMD中运行 yiic webapp work 如果报"php.exe"不是内部命令,是这样的:原因是Yii自带的yiic.bat找不到php.exe. 解决方法: 因为没有加入环境变量,所以无法直接执行php.exe. 右击"我的电脑->属性->高级->环境变量->系统变量->PATH->编辑&quo

  • php中3种方法删除字符串中间的空格

    第一种:使用正则 复制代码 代码如下: <?phpecho preg_replace('# #', '', 'ab     ab');//输出 "abab"?> 第二种:使用str_replace()函数 复制代码 代码如下: <?phpecho str_replace(' ', '', 'ab    ab');//输出 "abab'?> 第三种:使用strtr()函数 复制代码 代码如下: <?phpecho strtr('ab    ab',

  • php中替换字符串中的空格为逗号','的方法

    今天在网查到一篇介绍php中替换字符串中的空格为逗号','的文章,作个日记保存下来. 复制代码 代码如下: <pre name="code" class="php"><? php /* * 关键词中的空格替换为',' */ public function emptyreplace($str) { $str = str_replace(' ', ' ', $str); //替换全角空格为半角 $str = str_replace(' ', ' ',

  • thinkphp中session和cookie无效的解决方法

    本文实例讲述了thinkphp中session和cookie无效的解决方法.分享给大家供大家参考.具体分析如下: 问题描述: 在本地调试时session和cookie是用没有问题的,我是用session保存当前登录账户的信息,上传服务器之后,发现跳转之后session不复存在,为什么呢?在当前页面输出session是存在的. 遇到这个问题三天了,因为是自学没有老师可以请教,身边也没有几个是弄PHP的,所以真的是很悲剧,于是乎百度,而百度上很多人都是屁话连天,没有什么可以解决问题的,经过三天的修改

  • php将textarea数据提交到mysql出现很多空格的解决方法

    本文实例讲述了php将textarea数据提交到mysql出现很多空格的解决方法.分享给大家供大家参考.具体分析如下: 有一些朋友可能会发现我们在html提交给php处理保存数据到mysql中之后会发现我们再次从mysql读出数据时会有很多的空格了,那么我们如果直接在mysql中查看又没有空间,这是什么问题要如何处理呢. textarea中总是有很多空格问题解决 问题描述: 在php读取mysql数据到textarea中开头可结尾总有很多空格,在数据表中查看数据是没有空格的. 问题原因: 内容应

  • thinkphp3.0输出重复两次的解决方法

    本文实例讲述了thinkphp3.0输出重复两次的解决方法.分享给大家供大家参考.具体方法如下: 主入口文件如下: 复制代码 代码如下: <?php  define('APP_NAME','Admin');//定义项目名称  define('APP_PATH','./Admin/');//定义项目存放路径  define('THINK_PATH','./ThinkPHP/');//定义ThinkPHP核心文件所在路径  require THINK_PATH.'ThinkPHP.php';//导入

  • PHP清除数组中所有字符串两端空格的方法

    本文实例讲述了PHP清除数组中所有字符串两端空格的方法,分享给大家供大家参考.具体实现方法如下: 一般来说在php中清除字符串中空格我们可以有很多实现方法,但清除数组中所有值的前后代码我们并不能简单的使用这些方法,本文实例主要使用php独有的array_map函数遍历清除数组中所有字符串的两端空格.   具体实现代码如下: 复制代码 代码如下: function TrimArray($Input){     if (!is_array($Input))         return trim($

  • php中ltrim()、rtrim()与trim()删除字符空格实例

    本文实例讲述了php中ltrim().rtrim()与trim()删除字符空格的方法.分享给大家供大家参考.具体分析如下: php中的trim函数不能像asp中的一样,可以自动删除所有空格,PHP专业提供了 rtrim() trim()函数,对此感兴趣的朋友可以参考一下. PHP实例代码如下: 复制代码 代码如下: <?php $str=" 去除前后空格 "; echo "方括号中为原始字符串:[".$str."]<br>";

  • PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)

    最近我从thinkphp的'RUNTIME_ALLINONE'借鉴到经验:不怕缓存多,就怕调用乱,索性将所有常用的文件全部合并成一个文件,岂不美哉... 复制代码 代码如下: function strip_whitespace($content) {    $stripStr = '';    //分析php源码    $tokens =   token_get_all ($content);    $last_space = false;    for ($i = 0, $j = count

随机推荐