欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

压缩php代码,删除多余空白注释,无用空格,比TP处理彻底

程序员文章站 2023-12-22 22:06:52
...
压缩php代码,删除多余空白注释,无用空格,比TP处理彻底
/**
* @Author 70(QQ781787584)
*
* @link http://www.qiling.org
*
* @Copyright 2014-12-09 00:32:10
*
*/
header ( "Content-type: text/html; charset=utf-8" );
// $content = file_get_contents ( 'demo.php' );
$content = file_get_contents ( __FILE__ );
$result = token_get_all ( $content );

// 遍历数组 使用指针
$string = '';
$space = false;
// print_r($result);

while ( current ( $result ) ) {
$value = current ( $result );
if (is_string ( $value )) {
// 去掉字符左侧的 空白
if ($space) {
$string = rtrim ( $string ) . $value;
} else {
$string .= $value;
}
// 去掉字符右侧的 空白 添加一个标记 如果为 True需要删除右侧的空白 如果 为 false 不需要删除右侧的空白
$space = true;
} else {
switch ($value [0]) {
// 去掉php开始标记中的空格
case T_OPEN_TAG :
$string .= trim ( $value [1] ) . ' ';
//这样做了能删除各种注释下的多余空格 如果没有下边这句会造成有多余空格 如 //虽然我这样做了 ^_^ 但是我没想明白...
$space = true;
break;
// 把空白字符全部转换为 空格
case T_WHITESPACE :
if ($space == false) {
$string .= ' ';
$space = true;
}
break;
// 去掉注释
case T_DOC_COMMENT :
$space = true;
break;
// 去掉注释
case T_COMMENT :
$space = true;
break;
// 判断定界符开始
case T_START_HEREDOC :
$space = false;
$string .= " break;
// 判断定界符结束
case T_END_HEREDOC :
$space = true;
$string .= "S;\n";
//因为这里取到的值是不带 分号 ; 的 这里直接 跳过下个元素的处理 注:不知道会不会存在问题 测试没问题
next ( $result );

break;
default :
// 去掉某些 左右 的空白 你可以添加更多你认为两边可以删除空白的标记 目前我找到这些
$array = array (
T_CONCAT_EQUAL, // .=
T_DOUBLE_ARROW, // =>
T_BOOLEAN_AND, // &&
T_BOOLEAN_OR, // ||
T_IS_EQUAL, // ==
T_IS_NOT_EQUAL, // != or
T_IS_SMALLER_OR_EQUAL, // T_IS_GREATER_OR_EQUAL, // >=
T_INC, // ++
T_DEC, // --
T_PLUS_EQUAL, // +=
T_MINUS_EQUAL, // -=
T_MUL_EQUAL, // *=
T_DIV_EQUAL, // /=
T_IS_IDENTICAL, // ===
T_IS_NOT_IDENTICAL, // !==
T_DOUBLE_COLON, // ::
T_PAAMAYIM_NEKUDOTAYIM, // ::
T_OBJECT_OPERATOR, // ->
T_DOLLAR_OPEN_CURLY_BRACES, // ${
T_AND_EQUAL, // &=
T_MOD_EQUAL, // %=
T_XOR_EQUAL, // ^=
T_OR_EQUAL, // |=
T_SL, // T_SR, // >>
T_SL_EQUAL, // T_SR_EQUAL // >>=
);

if (in_array ( $value [0], $array )) {
$string = rtrim ( $string ) . $value [1];
;;;;;;;;;;; //有强迫症的可以继续删除 多余 的分号 我就不删除了
} else {
$string .= $value [1];
}
$space = in_array ( $value [0], $array );
break;
}
}
next ( $result );
}

echo $string;
转载注明我的博客地址:http://www.qiling.org

AD:真正免费,域名+虚机+企业邮箱=0元

上一篇:

下一篇: