Сжатие JS кода в phpBB

Недавно я "мучил" функцию для сжатия CSS (Сжатие CSS кода в phpBB), сегодня я мучился с функцией для сжатия JS, самое трудно мне далось - это удаление комментариев из кода, "запыхался" с этим... Немного запутался с удалением лишних пробелов, но, думаю, со временем доведу до ума.

Значит, открываем: "phpbb/template/assets_bag.php", находим функцию "get_scripts_content" и полностью ее заменяем на:
	public function get_scripts_content()
	{
		$output = '';
		foreach ($this->scripts as $script)
		{
			$press_file = $script->get_url();
			if (strpos($press_file, 'min') === false)
			{
				$press_file = str_replace('.js', '_press.js', $press_file);
				$file = explode('?', $press_file);

				if (!file_exists($file[0]))
				{
					$url_js = explode('?', $script->get_url());
					if (strpos($url_js[0], '..') !== false)
					{
						$url_js[0] = str_replace('../', '', $url_js[0]);
						$file[0] = str_replace('../', '', $file[0]);
					}

					$code_js = file_get_contents($url_js[0]);

					$code_js = preg_replace('/(?:(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:(?<!\:|\\\|\'|\")\/\/.*))/', '', $code_js);
					$code_js = str_replace(array("\n", "\t"), ' ', $code_js);
					$code_js = preg_replace('~ {2,}~', ' ', $code_js);

					$code_js = str_replace(
						array('if (', ' +', '+ ', '{ ', ' {', '} ', ' }', '= ', ' =', '| ', ' |', '- ', ' -', ': ', ' :', '; ', '* ', ' *', '&& ', ' &&', '< ', ' <', '> ', ' >', '? ', ' ?', '/ ', ' /'), 
						array('if(', '+', '+', '{', '{', '}', '}', '=', '=', '|', '|', '-', '-', ':', ':', ';', '*', '*', '&&', '&&', '<', '<', '>', '>', '?', '?', '/', '/'),
					$code_js);

					$fp = fopen($file[0], 'w');
					fwrite($fp, $code_js);
					fclose($fp);
				}
			}

			$output .= '<script type="text/javascript" src="' . $press_file . '"></script>' . "\n";
		}

		return $output;
	}

Готово. Теперь, рядом с некоторыми JS файлами будут созданы их сжатые копии и будут подключены к документу.

Наверняка, вы скажите, что это:
					$code_js = str_replace(
						array('if (', ' +', '+ ', '{ ', ' {', '} ', ' }', '= ', ' =', '| ', ' |', '- ', ' -', ': ', ' :', '; ', '* ', ' *', '&& ', ' &&', '< ', ' <', '> ', ' >', '? ', ' ?', '/ ', ' /'), 
						array('if(', '+', '+', '{', '{', '}', '}', '=', '=', '|', '|', '-', '-', ':', ':', ';', '*', '*', '&&', '&&', '<', '<', '>', '>', '?', '?', '/', '/'),
					$code_js);

Не есть хоро, мол можно регулярным выражение сделать тоже самое, будет красивее и кода раза в четыре меньше. Я согласен с этим, но не смог я написать регулярное выражение, чтобы оно не удаляло то, чего удалять нельзя.

После обновления движка, в случае замены всех файлов, правку компрессора придется повторить.

Будьте внимательны, функция сыровата.