Сжатие php кода путём удаления комментариев, пробелов и т.п. |

29.03.2009, 20:20
|
|
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
С нами:
9798086
Репутация:
999
|
|
Сжатие php кода путём удаления комментариев, пробелов и т.п.
Собственно, функции:
Максимальное сжатие:
PHP код:
<?
function compress_code($code) {
$array = token_get_all($code);
$ret = "";
for($i = 0; $i < count($array); $i++) {
$obj = $array[$i];
if(is_string($obj))
$ret .= $obj;
else {
$a = $obj[0];
$s = $obj[1];
if($a == T_ABSTRACT || $a == T_CASE || $a == T_CLASS || $a == T_CLONE || $a == T_CONST || $a == T_DECLARE || $a == T_ECHO || $a == T_ELSE || $a == T_FINAL || $a == T_FUNCTION || $a == T_GLOBAL || $a == T_INCLUDE || $a == T_INCLUDE_ONCE || $a == T_INTERFACE || $a == T_NEW || $a == T_OLD_FUNCTION || $a == T_PRINT || $a == T_PRIVATE || $a == T_PUBLIC || $a == T_PROTECTED || $a == T_RETURN || $a == T_REQUIRE || $a == T_REQUIRE_ONCE || $a == T_STATIC || $a == T_PROTECTED || $a == T_THROW || $a == T_USE || $a == T_VAR || $a == T_LNUMBER)
$ret .= strtolower($s)." ";
if($a == T_AND_EQUAL || $a == T_CHARACTER || $a == T_CONCAT_EQUAL || $a == T_CONSTANT_ENCAPSED_STRING || $a == T_CURLY_OPEN || $a == T_DEC || $a == T_DIV_EQUAL || $a == T_DOLLAR_OPEN_CURLY_BRACES || $a == T_DOUBLE_ARROW || $a == T_DOUBLE_COLON || $a == T_INC || $a == T_INLINE_HTML || $a == T_IS_EQUAL || $a == T_IS_GREATER_OR_EQUAL || $a == T_IS_IDENTICAL || $a == T_IS_SMALLER_OR_EQUAL || $a == T_MINUS_EQUAL || $a == T_MUL_EQUAL || $a == T_MOD_EQUAL || $a == T_OPEN_TAG_WITH_ECHO || $a == T_OR_EQUAL || $a == T_PAAMAYIM_NEKUDOTAYIM || $a == T_PLUS_EQUAL || $a == T_SL || $a == T_SL_EQUAL || $a == T_SR || $a == T_SR_EQUAL || $a == T_START_HEREDOC || $a == T_STRING || $a == T_ENCAPSED_AND_WHITESPACE || $a == T_NUM_STRING || $a == T_STRING_VARNAME || $a == T_XOR_EQUAL || $a == T_OBJECT_OPERATOR || $a == T_IS_NOT_EQUAL || $a == T_IS_NOT_IDENTICAL)
$ret .= $s;
if($a == T_AS || $a == T_BOOLEAN_AND || $a == T_BOOLEAN_OR || $a == T_EXTENDS || $a == T_IMPLEMENTS || $a == T_INSTANCEOF || $a == T_LOGICAL_AND || $a == T_LOGICAL_OR || $a == T_LOGICAL_XOR)
$ret .= " ".strtolower($s)." ";
if($a == T_CLASS_C || $a == T_DIR || $a == T_FILE || $a == T_FUNC_C || $a == T_LINE || $a == T_METHOD_C || $a == T_NS_C)
$ret .= strtoupper($s);
if($a == T_ARRAY || $a == T_ARRAY_CAST || $a == T_BOOL_CAST || $a == T_BREAK || $a == T_CATCH || $a == T_CONTINUE || $a == T_DEFAULT || $a == T_DO || $a == T_DOUBLE_CAST || $a == T_ELSEIF || $a == T_EMPTY || $a == T_ENDDECLARE || $a == T_ENDFOR || $a == T_ENDFOREACH || $a == T_ENDIF || $a == T_ENDSWITCH || $a == T_ENDWHILE || $a == T_WHILE || $a == T_EVAL || $a == T_EXIT || $a == T_FOR || $a == T_FOREACH || $a == T_HALT_COMPILER || $a == T_IF || $a == T_INT_CAST || $a == T_ISSET || $a == T_LIST || $a == T_OBJECT_CAST || $a == T_STRING_CAST || $a == T_SWITCH || $a == T_TRY || $a == T_UNSET || $a == T_UNSET_CAST)
$ret .= strtolower($s);
if($a == T_CLOSE_TAG)
$ret .= " ".$s;
if($a == T_DNUMBER)
$ret .= $s." ";
if($a == T_END_HEREDOC) {
$ret .= $s.";\r\n";
$i++;
}
if($a == T_OPEN_TAG)
$ret .= trim(strtolower($s))." ";
if($a == T_VARIABLE) {
if($s == '$HTTP_POST_VARS')
$s = '$_POST';
if($s == '$HTTP_GET_VARS')
$s = '$_GET';
if($s == '$HTTP_REQUEST_VARS')
$s = '$_REQUEST';
if($s == '$HTTP_COOKIE_VARS')
$s = '$_COOKIE';
if($s == '$HTTP_POST_FILES')
$s = '$_FILES';
if($s == '$HTTP_SERVER_VARS')
$s = '$_SERVER';
if($s == '$HTTP_SESSION_VARS')
$s = '$_SESSION';
$ret .= $s;
}
}
}
$ret = preg_replace("#<\?php#is","<?",$ret);
$ret = preg_replace("#php \?>#is","?>",$ret);
$ret = str_replace("<? ?>","",$ret);
return $ret;
}
?>
Только удаление комментраиев:
PHP код:
function remove_comments($code) {
$array = token_get_all($code);
$ret = "";
for($i = 0; $i < count($array); $i++) {
$obj = $array[$i];
if(is_string($obj))
$ret .= $obj;
else {
if(!strstr(token_name($obj[0]),"COMMENT"))
$ret .= $obj[1];
}
}
return $ret;
}
Пример:
PHP код:
$cnt=compress_code(file_get_contents('script.php'));
file_put_contents('script.php',$cnt);
(C) Eugen, с tem.dp.ua
|
|
|

29.03.2009, 20:28
|
|
Banned
Регистрация: 14.01.2009
Сообщений: 515
С нами:
9116877
Репутация:
468
|
|
ИНтересно, но безполезно)
|
|
|

29.03.2009, 20:29
|
|
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
С нами:
9798086
Репутация:
999
|
|
Почему, иногда несколько бывает даже очень полезно =)
|
|
|

29.03.2009, 20:48
|
|
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
С нами:
10109126
Репутация:
1980
|
|
автор видимо не в курсе, что существует функция php_strip_whitespace()
|
|
|

29.03.2009, 20:56
|
|
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
С нами:
9798086
Репутация:
999
|
|
Наверное =)
Но там же не только комменты...
|
|
|

29.03.2009, 20:57
|
|
Познавший АНТИЧАТ
Регистрация: 01.05.2006
Сообщений: 1,021
С нами:
10541186
Репутация:
921
|
|
против я этих сжатий которые только сделают код нечитабельным а уменьшат на пару килобайт
|
|
|

29.03.2009, 20:59
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
2 Sharky:
а зачем тебе читабельный шелл, например?
|
|
|

30.03.2009, 01:09
|
|
Познавший АНТИЧАТ
Регистрация: 01.05.2006
Сообщений: 1,021
С нами:
10541186
Репутация:
921
|
|
Сообщение от Pashkela
2 Sharky:
а зачем тебе читабельный шелл, например?
а если не например?
|
|
|

29.03.2009, 21:18
|
|
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
С нами:
9398085
Репутация:
11
|
|
Есть небольшой недочет..
целых два огромнейших пробела!! 
|
|
|

29.03.2009, 21:25
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2007
Сообщений: 1,268
С нами:
10058786
Репутация:
4589
|
|
PHP код:
$code = '<? /* тут типа куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча куча кода */ ?>';
$code = base64_encode(gzdeflate($code));
echo $code;
Распаковка - base64 decode && gzinflate && eval
|
|
|
|
 |
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Books PHP
|
FRAGNATIC |
PHP |
186 |
21.02.2010 02:41 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|