47 if (count(self::$_map) > 0) {
51 $prefix =
'Swift_CharacterReader_';
54 'class' => $prefix.
'GenericFixedWidthReader',
55 'constructor' => array(1),
59 'class' => $prefix.
'GenericFixedWidthReader',
60 'constructor' => array(2),
64 'class' => $prefix.
'GenericFixedWidthReader',
65 'constructor' => array(4),
69 self::$_map[
'utf-?8'] = array(
70 'class' => $prefix.
'Utf8Reader',
71 'constructor' => array(),
75 self::$_map[
'(us-)?ascii'] = $singleByte;
76 self::$_map[
'(iso|iec)-?8859-?[0-9]+'] = $singleByte;
77 self::$_map[
'windows-?125[0-9]'] = $singleByte;
78 self::$_map[
'cp-?[0-9]+'] = $singleByte;
79 self::$_map[
'ansi'] = $singleByte;
80 self::$_map[
'macintosh'] = $singleByte;
81 self::$_map[
'koi-?7'] = $singleByte;
82 self::$_map[
'koi-?8-?.+'] = $singleByte;
83 self::$_map[
'mik'] = $singleByte;
84 self::$_map[
'(cork|t1)'] = $singleByte;
85 self::$_map[
'v?iscii'] = $singleByte;
88 self::$_map[
'(ucs-?2|utf-?16)'] = $doubleByte;
91 self::$_map[
'(ucs-?4|utf-?32)'] = $fourBytes;
94 self::$_map[
'.*'] = $singleByte;
106 $charset = trim(strtolower($charset));
107 foreach (self::$_map as $pattern => $spec) {
108 $re =
'/^'.$pattern.
'$/D';
109 if (preg_match($re, $charset)) {
110 if (!array_key_exists($pattern, self::$_loaded)) {
111 $reflector =
new ReflectionClass($spec[
'class']);
112 if ($reflector->getConstructor()) {
113 $reader = $reflector->newInstanceArgs($spec[
'constructor']);
115 $reader = $reflector->newInstance();
117 self::$_loaded[$pattern] = $reader;
120 return self::$_loaded[$pattern];