2

当我的脚本完成后,我想优化/将它们转换为更小的尺寸 + 即使文件被盗,也很难知道文件做了什么。

$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 ';

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

4

1 回答 1

1

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

preg_replace('/\G(?:"[^"]*"|\'[^\']*\'|[^"\'\s]+)*\K\s+/', ' ', $string);
于 2012-05-31T12:38:24.273 回答