Chris@0: setEncoding($encoding, $convertEncoding); Chris@0: return $wrapper; Chris@0: } Chris@0: } Chris@0: Chris@0: throw new Exception\RuntimeException( Chris@0: 'No wrapper found supporting "' . $encoding . '"' Chris@0: . (($convertEncoding !== null) ? ' and "' . $convertEncoding . '"' : '') Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Get a list of all known single-byte character encodings Chris@0: * Chris@0: * @return string[] Chris@0: */ Chris@0: public static function getSingleByteEncodings() Chris@0: { Chris@0: return static::$singleByteEncodings; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Check if a given encoding is a known single-byte character encoding Chris@0: * Chris@0: * @param string $encoding Chris@0: * @return bool Chris@0: */ Chris@0: public static function isSingleByteEncoding($encoding) Chris@0: { Chris@0: return in_array(strtoupper($encoding), static::$singleByteEncodings); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Check if a given string is valid UTF-8 encoded Chris@0: * Chris@0: * @param string $str Chris@0: * @return bool Chris@0: */ Chris@0: public static function isValidUtf8($str) Chris@0: { Chris@0: return is_string($str) && ($str === '' || preg_match('/^./su', $str) == 1); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Is PCRE compiled with Unicode support? Chris@0: * Chris@0: * @return bool Chris@0: */ Chris@0: public static function hasPcreUnicodeSupport() Chris@0: { Chris@0: if (static::$hasPcreUnicodeSupport === null) { Chris@0: ErrorHandler::start(); Chris@0: static::$hasPcreUnicodeSupport = defined('PREG_BAD_UTF8_OFFSET_ERROR') && preg_match('/\pL/u', 'a') == 1; Chris@0: ErrorHandler::stop(); Chris@0: } Chris@0: return static::$hasPcreUnicodeSupport; Chris@0: } Chris@0: }