Občas je třeba zmenšit PHP skripty na minimum. Odstranit komentáře, zredukovat bílé místo. Zkrátí se doba nahrávání na server, mírně zrychlí provádění a program se stane hůře čitelný pro nepovolané osoby.

Existují sice nástroje, které tento úkol řeší téměř dokonale (Zend Encoder, SourceGuardian atd.), mají však svá „ale“. Buď v podobě závratné ceny, specifických nároků na hosting, nebo v prostém zatajení faktu, že existují i zpětné dekodéry.

Ukážu vám jeden směšně jednoduchý postup, jak vypustit ze skriptů zbytečné znaky. Používám jej pro texy-compact.php, kde dosahuji úspory cca 50% velikosti. A v žádném případě to neovlivní jeho funkčnost.

// Dgx's PHP shrinker

// PHP 4 & 5 compatibility
if (!defined('T_DOC_COMMENT'))
	define ('T_DOC_COMMENT', -1);

if (!defined('T_ML_COMMENT'))
	define ('T_ML_COMMENT', -1);

// read input file
$input = file_get_contents('script.php');

$space = $output = '';
$set = '!"#$&\'()*+,-./:;<=>?@[\]^`{|}';
$set = array_flip(preg_split('//',$set));

foreach (token_get_all($input) as $token)  {
	if (!is_array($token))
	$token = array(0, $token);

	switch ($token[0]) {
	case T_COMMENT:
	case T_ML_COMMENT:
	case T_DOC_COMMENT:
	case T_WHITESPACE:
		$space = ' ';
		break;

	default:
		if (isset($set[substr($output, -1)]) ||
			isset($set[$token[1]{0}])) $space = '';
		$output .= $space . $token[1];
		$space = '';
	}
}


// write shrinked file
fwrite(
	fopen('output.php', 'w'),
	$output
);

Nevím, jestli to potřebuje podrobnější komentář, každopádně hlavní magie se skrývá ve funkci token_get_all, kterou doporučuji nastudovat.