在部署php文件之前,我想优化/加密它们,怎么样?

时间:2012-05-31 12:19:44

标签: php optimization encryption

当我的脚本完成后,我想优化/将它们转换为更小的尺寸+更难以了解文件甚至被盗的内容。

$c = file_get_contents('source.php');

$newStr  = '';
$commentTokens = array(T_COMMENT);
if (defined('T_DOC_COMMENT'))
    $commentTokens[] = T_DOC_COMMENT; // PHP 5
if (defined('T_ML_COMMENT'))
    $commentTokens[] = T_ML_COMMENT;  // PHP 4
$tokens = token_get_all($c);
foreach ($tokens as $token) {
    if (is_array($token)) {
        if (in_array($token[0], $commentTokens))
            continue;
        $token = $token[1];
    }
    $newStr .= $token;
}

$newStr = str_replace (chr(13), '', $newStr);
$newStr = str_replace (chr(10), '', $newStr);
$newStr = preg_replace('/\s+/', ' ', $newStr);

现在$newStr包含"压缩"东西。几乎可以,但它会杀死很多白色空间。如果代码中有空格如下:

if (true)
   {
        codeeee();
   }

它转换为:

if (true)
{
codeeee();
}

那没关系。但在这种情况下:

$a = '      var          ';

它确实:

$a = ' var ';

这是不需要的。如何正确优化?有什么想法吗?我差点考虑重命名类名等。

1 个答案:

答案 0 :(得分:1)

this answer的帮助下,我能够创建这个正则表达式,将所有空格(包括换行符)修剪为单个空格,但保留引号之间的空格(“或”)

preg_replace('/\G(?:"[^"]*"|\'[^\']*\'|[^"\'\s]+)*\K\s+/', ' ', $string);