HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Сжатие php кода путём удаления комментариев, пробелов и т.п.
  #1  
Старый 29.03.2009, 20:20
-Hormold-
Постоянный
Регистрация: 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
 
Ответить с цитированием

  #2  
Старый 29.03.2009, 20:28
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
С нами: 9116877

Репутация: 468


По умолчанию

ИНтересно, но безполезно)
 
Ответить с цитированием

  #3  
Старый 29.03.2009, 20:29
-Hormold-
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
С нами: 9798086

Репутация: 999


По умолчанию

Почему, иногда несколько бывает даже очень полезно =)
 
Ответить с цитированием

  #4  
Старый 29.03.2009, 20:48
[Raz0r]
Members of Antichat - Level 5
Регистрация: 25.02.2007
Сообщений: 495
С нами: 10109126

Репутация: 1980
По умолчанию

автор видимо не в курсе, что существует функция php_strip_whitespace()
 
Ответить с цитированием

  #5  
Старый 29.03.2009, 20:56
-Hormold-
Постоянный
Регистрация: 29.09.2007
Сообщений: 617
С нами: 9798086

Репутация: 999


По умолчанию

Наверное =)
Но там же не только комменты...
 
Ответить с цитированием

  #6  
Старый 29.03.2009, 20:57
Sharky
Познавший АНТИЧАТ
Регистрация: 01.05.2006
Сообщений: 1,021
С нами: 10541186

Репутация: 921


По умолчанию

против я этих сжатий которые только сделают код нечитабельным а уменьшат на пару килобайт
 
Ответить с цитированием

  #7  
Старый 29.03.2009, 20:59
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

2 Sharky:

а зачем тебе читабельный шелл, например?
 
Ответить с цитированием

  #8  
Старый 30.03.2009, 01:09
Sharky
Познавший АНТИЧАТ
Регистрация: 01.05.2006
Сообщений: 1,021
С нами: 10541186

Репутация: 921


По умолчанию

Цитата:
Сообщение от Pashkela  
2 Sharky:

а зачем тебе читабельный шелл, например?
а если не например?
 
Ответить с цитированием

  #9  
Старый 29.03.2009, 21:18
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
С нами: 9398085

Репутация: 11
По умолчанию

Есть небольшой недочет..

Цитата:
else {$l_kod=7 ;};
целых два огромнейших пробела!!
 
Ответить с цитированием

  #10  
Старый 29.03.2009, 21:25
BlackSun
Познавший АНТИЧАТ
Регистрация: 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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.