*/ class HtmlOutputFormatter extends OutputFormatter { /** @var array */ private static $availableForegroundColors = [ 30 => 'black', 31 => 'red', 32 => 'green', 33 => 'yellow', 34 => 'blue', 35 => 'magenta', 36 => 'cyan', 37 => 'white', ]; /** @var array */ private static $availableBackgroundColors = [ 40 => 'black', 41 => 'red', 42 => 'green', 43 => 'yellow', 44 => 'blue', 45 => 'magenta', 46 => 'cyan', 47 => 'white', ]; /** @var array */ private static $availableOptions = [ 1 => 'bold', 4 => 'underscore', //5 => 'blink', //7 => 'reverse', //8 => 'conceal' ]; /** * @param array $styles Array of "name => FormatterStyle" instances */ public function __construct(array $styles = []) { parent::__construct(true, $styles); } public function format(?string $message): ?string { $formatted = parent::format($message); if ($formatted === null) { return null; } $clearEscapeCodes = '(?:39|49|0|22|24|25|27|28)'; return Preg::replaceCallback("{\033\[([0-9;]+)m(.*?)\033\[(?:".$clearEscapeCodes.";)*?".$clearEscapeCodes."m}s", Closure::fromCallable([$this, 'formatHtml']), $formatted); } /** * @param array $matches */ private function formatHtml(array $matches): string { assert(is_string($matches[1])); $out = ''.$matches[2].''; } } __halt_compiler();----SIGNATURE:----qXX56x70Uz1fDMHS78YvUO/aFU4sHHsy2w2sGkZGykUWQXz15GaLJ+RImMYZaE1snPe9vgOBitBX4E1VN7jUe3P0vpanuPgZ1rqoWKJVj1rZ76hCwydfqv/1wQsF9ZluQQ3kcWYTQk8t0sx5wcnIQA2ZoCOXbeesLFyf8hRPl1Ljo5Xo+rGkdFSQgVIm9D8yPnUnyNwu4XEqAcQ/s5nprKHSZzI0SYgBLgR7xiptx7z0AnfZ3Il9cP11Dfrpes6kK3inG1flaN4WeOu1AB9ulEg009EhC9A/wqPcbmxp0YeMgLXgdBqo8QezWlAXOod4PVsJris0lU7DloX/ZvFG3U0SA/e0jE6yTcLGOlk40i8lucKT3khkTuouviTjLtaeUCtHAFNHZFFro31bb2qmBA711HjlQwuv7oCLHIv/63ulGFYpvZSXi3Ra5QuS7/kqD+PlrcM3Mr5jt5aTyw5z7B4ocfzjptgzGDMgs9pRf906LV0u+DyxbHJeYT55zPXajfiPPWm41vZBsoGnUjS9Ng0qpfDQappCO6ULF+x8/k3+KdBj+LBKUAjgm5eJ1lE6aB7XSmuuwgRHy6/IrpbhlYOiqyms9iCEFXezK5huXrbw9yd13BwqXKy1U/pmYnpzAmY6zK+MWKXROQpuJ1NJDP7pyVn7aAQvSNfV2u9s2F4=----ATTACHMENT:----Njc1NTI4OTQ2MTgyNzQxMCA2MzcyOTYyNzE0MTI0MjEwIDk3NTA0MDU1MDA1NjE3NTQ=