2012-05-31 56 views
2

當我的腳本完成後,我想優化/將它們轉換爲更小的尺寸+更難以知道文件甚至被盜的情況。在部署php文件之前,我想優化/加密它們,怎麼樣?

$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

只是使用混淆/碼編碼器解決方案,如果你真的不得不這樣做。 –

+2

你要保護你的代碼,或者你想優化呢?同時你真的不能兩者都做,和任何一個會相當 –

+0

yea obfuscator。不幸的是,我只看到在線版本... –

回答

1

this answer的幫助下,我創建了這個正則表達式,可以將所有空格(包括換行符)修剪到單個空格,但保留引號之間的空格('或')

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