<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>{ rawsrc::code() } &#187; outils</title>
	<atom:link href="https://blog.developpez.com/rawsrc/pcategory/php-5-3/outils/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/rawsrc</link>
	<description></description>
	<lastBuildDate>Fri, 07 Sep 2012 20:16:17 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Minifier (compresser) du code PHP 5.3+</title>
		<link>https://blog.developpez.com/rawsrc/p10324/php-5-3/outils/minifier_compresser_du_code_php</link>
		<comments>https://blog.developpez.com/rawsrc/p10324/php-5-3/outils/minifier_compresser_du_code_php#comments</comments>
		<pubDate>Thu, 19 Jan 2012 13:46:07 +0000</pubDate>
		<dc:creator><![CDATA[rawsrc]]></dc:creator>
				<category><![CDATA[outils]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Bonjour, J&#8217;ai eu à développer un outil qui se charge de minifier le code source d&#8217;un ou plusieurs fichiers. Je vous propose une source PHP qui se charge de ce travail. CODE SOURCE DE LA CLASSE 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195class PhpMinifier { &#160; &#160;/** &#160; &#160; * List of tokens that can be written without sourrounding spaces &#160; &#160; * @var array array([] =&#38;gt; token) &#160; &#160; */ &#160; &#160;static private $noSpaces = array( &#160; &#160; &#160; T_AND_EQUAL, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Bonjour,</p>
<p>J&rsquo;ai eu à développer un outil qui se charge de minifier le code source d&rsquo;un ou plusieurs fichiers.<br />
Je vous propose une source PHP qui se charge de ce travail.<br />
<span id="more-2"></span></p>
<p><strong>CODE SOURCE DE LA CLASSE</strong></p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">class PhpMinifier <br />
{<br />
&nbsp; &nbsp;/**<br />
&nbsp; &nbsp; * List of tokens that can be written without sourrounding spaces<br />
&nbsp; &nbsp; * @var array array([] =&amp;gt; token)<br />
&nbsp; &nbsp; */ <br />
&nbsp; &nbsp;static private $noSpaces = array( <br />
&nbsp; &nbsp; &nbsp; T_AND_EQUAL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// &amp;amp;= <br />
&nbsp; &nbsp; &nbsp; T_ARRAY_CAST, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // (array) <br />
&nbsp; &nbsp; &nbsp; T_BOOLEAN_AND, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// &amp;amp;&amp;amp; <br />
&nbsp; &nbsp; &nbsp; T_BOOLEAN_OR, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // || <br />
&nbsp; &nbsp; &nbsp; T_BOOL_CAST, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// (bool), (boolean) <br />
&nbsp; &nbsp; &nbsp; T_CASE, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // case <br />
&nbsp; &nbsp; &nbsp; T_CLOSE_TAG, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/* ?&amp;gt; */ <br />
&nbsp; &nbsp; &nbsp; T_CONCAT_EQUAL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // .= <br />
&nbsp; &nbsp; &nbsp; T_CONSTANT_ENCAPSED_STRING, // 'string' <br />
&nbsp; &nbsp; &nbsp; T_DEC, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// -- (one exception, see below) <br />
&nbsp; &nbsp; &nbsp; T_DIV_EQUAL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// /= <br />
&nbsp; &nbsp; &nbsp; T_DNUMBER, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// float number <br />
&nbsp; &nbsp; &nbsp; T_DOLLAR_OPEN_CURLY_BRACES, // ${ <br />
&nbsp; &nbsp; &nbsp; T_DOUBLE_ARROW, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // =&amp;gt; <br />
&nbsp; &nbsp; &nbsp; T_DOUBLE_CAST, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// (real), (double), (float) <br />
&nbsp; &nbsp; &nbsp; T_DOUBLE_COLON, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // :: <br />
&nbsp; &nbsp; &nbsp; T_INC, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// ++ (one exception, see below) <br />
&nbsp; &nbsp; &nbsp; T_INCLUDE, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// include <br />
&nbsp; &nbsp; &nbsp; T_INCLUDE_ONCE, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // include_once <br />
&nbsp; &nbsp; &nbsp; T_INT_CAST, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // (int), (integer) <br />
&nbsp; &nbsp; &nbsp; T_IS_EQUAL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // == <br />
&nbsp; &nbsp; &nbsp; T_IS_GREATER_OR_EQUAL, &nbsp; &nbsp; &nbsp;// &amp;gt;= <br />
&nbsp; &nbsp; &nbsp; T_IS_IDENTICAL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // === <br />
&nbsp; &nbsp; &nbsp; T_IS_NOT_EQUAL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // != or &nbsp;<br />
&nbsp; &nbsp; &nbsp; T_IS_NOT_IDENTICAL, &nbsp; &nbsp; &nbsp; &nbsp; // !== <br />
&nbsp; &nbsp; &nbsp; T_IS_SMALLER_OR_EQUAL, &nbsp; &nbsp; &nbsp;// &nbsp;<br />
&nbsp; &nbsp; &nbsp; T_OPEN_TAG_WITH_ECHO, &nbsp; &nbsp; &nbsp; // &amp;lt;?= ou &amp;lt;%= <br />
&nbsp; &nbsp; &nbsp; T_OR_EQUAL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // |= <br />
&nbsp; &nbsp; &nbsp; T_PAAMAYIM_NEKUDOTAYIM, &nbsp; &nbsp; // :: <br />
&nbsp; &nbsp; &nbsp; T_PLUS_EQUAL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // += <br />
&nbsp; &nbsp; &nbsp; T_REQUIRE, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// require <br />
&nbsp; &nbsp; &nbsp; T_REQUIRE_ONCE, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // require_once <br />
&nbsp; &nbsp; &nbsp; T_SL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &amp;lt;&amp;lt; <br />
&nbsp; &nbsp; &nbsp; T_SL_EQUAL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &amp;lt;&amp;gt; <br />
&nbsp; &nbsp; &nbsp; T_SR_EQUAL, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &amp;gt;&amp;gt;= <br />
&nbsp; &nbsp; &nbsp; T_STRING_CAST, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// (string) <br />
&nbsp; &nbsp; &nbsp; T_UNSET_CAST, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // (unset) <br />
&nbsp; &nbsp; &nbsp; T_XOR_EQUAL &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // ^= <br />
&nbsp; &nbsp;); <br />
&nbsp;<br />
&nbsp; &nbsp;/** <br />
&nbsp; &nbsp; * Minify PHP source code of files in the $paths argument <br />
&nbsp; &nbsp; * and store the minified code in the $outputFile argument <br />
&nbsp; &nbsp; * @param array $paths Array([] =&amp;gt; path) <br />
&nbsp; &nbsp; * @param string $outputFile <br />
&nbsp; &nbsp; */ <br />
&nbsp; &nbsp;static function minify(array $paths, $outputFile) { <br />
&nbsp; &nbsp; &nbsp; $openTag = FALSE; <br />
&nbsp; &nbsp; &nbsp; $code = ''; <br />
&nbsp; &nbsp; &nbsp; foreach($paths as $path) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (is_file($path)) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $min = self::compress($path, TRUE); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (strlen($min['code'])) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ($openTag) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ( ! $min['openTag']) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$code .= '?&amp;gt;'; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$openTag = FALSE; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($min['openTag']) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$code .= ''; <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; file_put_contents($outputFile, $code); <br />
&nbsp; &nbsp;} <br />
&nbsp;<br />
&nbsp; &nbsp;/** <br />
&nbsp; &nbsp; * @param string $path <br />
&nbsp; &nbsp; * @param bool $removeOpenCloseTags <br />
&nbsp; &nbsp; * @return array Array(openTag =&amp;gt; bool, code =&amp;gt; string) <br />
&nbsp; &nbsp; */ <br />
&nbsp; &nbsp;static private function compress($path, $removeOpenCloseTags = TRUE) { <br />
&nbsp; &nbsp; &nbsp; $src = php_strip_whitespace($path); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; $code = ''; <br />
&nbsp; &nbsp; &nbsp; $openFound = FALSE; <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; if(empty($src)) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return array('openTag' =&amp;gt; $openFound, 'code' =&amp;gt; $code); <br />
&nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; $tokens = token_get_all($src); <br />
&nbsp; &nbsp; &nbsp; $nb &nbsp; &nbsp; = count($tokens); <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; $nextToken &nbsp; &nbsp;= NULL; <br />
&nbsp; &nbsp; &nbsp; $prevToken &nbsp; &nbsp;= NULL; <br />
&nbsp; &nbsp; &nbsp; $prevIsSymbol = FALSE; <br />
&nbsp; &nbsp; &nbsp; $prevSymbol &nbsp; = NULL; <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; for($i = 0; $i &amp;lt; $nb; ++$i) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$token = $tokens[$i]; <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// symbols <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( ! is_array($token)) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $code &nbsp; &nbsp; &nbsp; &nbsp; .= $token; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $prevIsSymbol &nbsp;= TRUE; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $prevSymbol &nbsp; &nbsp;= $token; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continue; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// use of named variables instead of array $token <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;list($index, $value) = $token; <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ($removeOpenCloseTags) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // ignore open token at the begining <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($i === 0) &amp;amp;&amp;amp; ($index === T_OPEN_TAG)) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$openFound = TRUE; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // ignore close token at the end <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($i === $nb-1) &amp;amp;&amp;amp; ($index === T_CLOSE_TAG)) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// HEREDOC/NOWDOC syntax: go to the end of the block without compression because of some special render <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ($index === T_START_HEREDOC) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $code .= $value; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while(++$i &amp;lt; $nb) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (is_array($tokens[$i])) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $code .= $tokens[$i][1]; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($tokens[$i][0] === T_END_HEREDOC) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$code .= &amp;quot;;&amp;quot;; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;++$i; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $code .= $tokens[$i]; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// SPACE between two keywords <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ($index === T_WHITESPACE) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($i === 1) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue; // sometimes space at the begining <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($i) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$prevToken = $tokens[$i-1]; // used below <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($i &nbsp;minified: $a+++$b -&amp;gt; error: must keep space: $a+ ++$b <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// case: $a - --$b =&amp;gt; minified: $a---$b -&amp;gt; error: must keep space: $a- --$b <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ($prevIsSymbol &amp;amp;&amp;amp; is_array($nextToken)) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($nextToken[0] === T_INC) &amp;amp;&amp;amp; ($prevSymbol === '+') <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; || ($nextToken[0] === T_DEC) &amp;amp;&amp;amp; ($prevSymbol === '-')) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$code .= $value; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$prevIsSymbol = FALSE; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$prevSymbol = NULL; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continue; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if the nextToken is a symbol or is in the array of &quot;no surrounding spaces&quot; tags <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// -&amp;gt; ignore the current token (T_WHITSPACE) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (( ! is_array($nextToken)) || (in_array($nextToken[0], self::$noSpaces))) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continue; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (is_array($nextToken)) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // special user case: compression of &quot;else if&quot; to &quot;elseif&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($nextToken[0] === T_IF) &amp;amp;&amp;amp; is_array($prevToken) &amp;amp;&amp;amp; ($prevToken[0] === T_ELSE)) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (($nextToken[0] === T_VARIABLE) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;amp;&amp;amp; (is_array($prevToken) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &amp;amp;&amp;amp; in_array($prevToken[0], array(T_PUBLIC, T_PROTECTED, T_PRIVATE, T_VAR, T_CASE, T_AS, T_RETURN, T_STATIC, T_ARRAY)))) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $code .= $value; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// if the current token is in the array of &quot;no surrounding spaces&quot; tags <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// -&amp;gt; keep the current token and ignore the next only if it corresponds to T_WHITESPACE <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (in_array($index, self::$noSpaces)) { <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $code .= $value; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($i &nbsp;$openFound, 'code' =&amp;gt; $code); <br />
&nbsp; &nbsp;} <br />
} <br />
?&amp;gt;</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
