灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2760回复:0

去除PHP代码中的空白和注释

楼主#
更多 发布于:2014-03-24 11:13
PHP内置了一个php_strip_whitespace方法用于读取php文件并去除代码中的空白和注释,但不支持直接读取内容去除空白和注释,下面的方法则可以支持读取字符串内容,并且ThinkPHP框架内置了该方法。
 
/**
  * 去除代码中的空白和注释
  * @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 .= "<<<THINKn";
                     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 评分0
游客

返回顶部