strlen($txt); $width = floor(($this->getColumns() + $len) / 2) - $len; return str_repeat(' ', $width) . $txt; } public function hasUtf8() { if ($this->isUtf8 === null) { // null should equal 0 here, however seems to equal '' on some systems: $current = setlocale(LC_ALL, 0); $parts = preg_split('/;/', $current); $lc_parts = array(); foreach ($parts as $part) { if (strpos($part, '=') === false) { continue; } list($key, $val) = preg_split('/=/', $part, 2); $lc_parts[$key] = $val; } $this->isUtf8 = array_key_exists('LC_CTYPE', $lc_parts) && preg_match('~\.UTF-8$~i', $lc_parts['LC_CTYPE']); } return $this->isUtf8; } public function clear() { return "\n"; } public function underline($text) { return $text; } public function colorize($text, $fgColor = null, $bgColor = null) { return $text; } public static function instance($output = STDOUT) { if (! isset(self::$instances[(int) $output])) { if (function_exists('posix_isatty') && posix_isatty($output)) { self::$instances[(int) $output] = new AnsiScreen(); } else { self::$instances[(int) $output] = new Screen(); } } return self::$instances[(int) $output]; } }