<?php
/**
* TrimSource()
*/
function TrimSource($source)
{
$tokens = token_get_all($source);
// Init
$source = '';
$was_ws = false;
$nl = '';
$spacer = '';
$beforespacer = '';
// Process
foreach ($tokens as $token) {
if (is_string($token)) {
// Single character tokens
$source .= $token.$nl;
$nl = '';
} else {
list($id, $text) = $token;
// echo token_name($id).' ';
switch ($id) {
// Skip all comments
case T_COMMENT:
case T_ML_COMMENT:
// case T_DOC_COMMENT:
break;
case T_END_HEREDOC:
$source .= $text;
$nl = "\n";
break;
// Remove whitespace
case T_WHITESPACE:
// We don't want more than one whitespace in a row replaced
if ($was_ws !== true) {
$source .= '';
}
$was_ws = true;
break;
/*
case T_STRING:
$source .= 'String Content';
break;
*/
case T_AS:
$beforespacer = ' ';
case T_CASE:
case T_RETURN:
case T_FUNCTION:
case T_CLASS:
$spacer = ' ';
default:
$was_ws = false;
$source .= $beforespacer.$text.$spacer;
$spacer = '';
$beforespacer = '';
break;
}
}
}
return $source;
}
$size_uncompressed = 0;
$theValue = '';
if (!empty($_POST['theValue'])){
$_POST['theValue'] = get_magic_quotes_gpc()
? stripslashes($_POST['theValue'])
: $_POST['theValue'];
$size_uncompressed = strlen($_POST['theValue']);
$theValue = htmlentities($_POST['theValue']);
$jsw = TrimSource($_POST['theValue']);
$size_compressed = strlen($jsw);
$percent_compressed = number_format($size_compressed / $size_uncompressed *100,2,',','.');
$data = htmlentities($jsw);
if (!isset($_POST['doitnow'])) {
$jsw = '';
}else{
$jsw = '<script type="text/javascript">'."\n".$jsw."\n</script>";
}
echo <<< EOT
<h2>$size_compressed $percent_compressed %</h2>
<pre style="background-color:#e1e1e1;padding:20px;border:2px solid #000;">
$data
</pre>
EOT;
}
echo <<< EOT
<h2>$size_uncompressed 100%</h2>
<form action="{$_SERVER['PHP_SELF']}" method="post" enctype="multipart/form-data">
<textarea style="display:block;" cols="50" rows="10" name="theValue">$theValue</textarea>
<input style="display:block;" type="submit" value="Snippet hochladen">
</form>
EOT;
?>
Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.