27 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
28 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
29 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
30 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
31 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
32 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
33 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
34 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
35 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
36 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
37 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
38 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
39 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
40 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
41 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
42 4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0
45 "\x00"=>1,
"\x01"=>1,
"\x02"=>1,
"\x03"=>1,
"\x04"=>1,
"\x05"=>1,
"\x06"=>1,
"\x07"=>1,
46 "\x08"=>1,
"\x09"=>1,
"\x0a"=>1,
"\x0b"=>1,
"\x0c"=>1,
"\x0d"=>1,
"\x0e"=>1,
"\x0f"=>1,
47 "\x10"=>1,
"\x11"=>1,
"\x12"=>1,
"\x13"=>1,
"\x14"=>1,
"\x15"=>1,
"\x16"=>1,
"\x17"=>1,
48 "\x18"=>1,
"\x19"=>1,
"\x1a"=>1,
"\x1b"=>1,
"\x1c"=>1,
"\x1d"=>1,
"\x1e"=>1,
"\x1f"=>1,
49 "\x20"=>1,
"\x21"=>1,
"\x22"=>1,
"\x23"=>1,
"\x24"=>1,
"\x25"=>1,
"\x26"=>1,
"\x27"=>1,
50 "\x28"=>1,
"\x29"=>1,
"\x2a"=>1,
"\x2b"=>1,
"\x2c"=>1,
"\x2d"=>1,
"\x2e"=>1,
"\x2f"=>1,
51 "\x30"=>1,
"\x31"=>1,
"\x32"=>1,
"\x33"=>1,
"\x34"=>1,
"\x35"=>1,
"\x36"=>1,
"\x37"=>1,
52 "\x38"=>1,
"\x39"=>1,
"\x3a"=>1,
"\x3b"=>1,
"\x3c"=>1,
"\x3d"=>1,
"\x3e"=>1,
"\x3f"=>1,
53 "\x40"=>1,
"\x41"=>1,
"\x42"=>1,
"\x43"=>1,
"\x44"=>1,
"\x45"=>1,
"\x46"=>1,
"\x47"=>1,
54 "\x48"=>1,
"\x49"=>1,
"\x4a"=>1,
"\x4b"=>1,
"\x4c"=>1,
"\x4d"=>1,
"\x4e"=>1,
"\x4f"=>1,
55 "\x50"=>1,
"\x51"=>1,
"\x52"=>1,
"\x53"=>1,
"\x54"=>1,
"\x55"=>1,
"\x56"=>1,
"\x57"=>1,
56 "\x58"=>1,
"\x59"=>1,
"\x5a"=>1,
"\x5b"=>1,
"\x5c"=>1,
"\x5d"=>1,
"\x5e"=>1,
"\x5f"=>1,
57 "\x60"=>1,
"\x61"=>1,
"\x62"=>1,
"\x63"=>1,
"\x64"=>1,
"\x65"=>1,
"\x66"=>1,
"\x67"=>1,
58 "\x68"=>1,
"\x69"=>1,
"\x6a"=>1,
"\x6b"=>1,
"\x6c"=>1,
"\x6d"=>1,
"\x6e"=>1,
"\x6f"=>1,
59 "\x70"=>1,
"\x71"=>1,
"\x72"=>1,
"\x73"=>1,
"\x74"=>1,
"\x75"=>1,
"\x76"=>1,
"\x77"=>1,
60 "\x78"=>1,
"\x79"=>1,
"\x7a"=>1,
"\x7b"=>1,
"\x7c"=>1,
"\x7d"=>1,
"\x7e"=>1,
"\x7f"=>1,
61 "\x80"=>0,
"\x81"=>0,
"\x82"=>0,
"\x83"=>0,
"\x84"=>0,
"\x85"=>0,
"\x86"=>0,
"\x87"=>0,
62 "\x88"=>0,
"\x89"=>0,
"\x8a"=>0,
"\x8b"=>0,
"\x8c"=>0,
"\x8d"=>0,
"\x8e"=>0,
"\x8f"=>0,
63 "\x90"=>0,
"\x91"=>0,
"\x92"=>0,
"\x93"=>0,
"\x94"=>0,
"\x95"=>0,
"\x96"=>0,
"\x97"=>0,
64 "\x98"=>0,
"\x99"=>0,
"\x9a"=>0,
"\x9b"=>0,
"\x9c"=>0,
"\x9d"=>0,
"\x9e"=>0,
"\x9f"=>0,
65 "\xa0"=>0,
"\xa1"=>0,
"\xa2"=>0,
"\xa3"=>0,
"\xa4"=>0,
"\xa5"=>0,
"\xa6"=>0,
"\xa7"=>0,
66 "\xa8"=>0,
"\xa9"=>0,
"\xaa"=>0,
"\xab"=>0,
"\xac"=>0,
"\xad"=>0,
"\xae"=>0,
"\xaf"=>0,
67 "\xb0"=>0,
"\xb1"=>0,
"\xb2"=>0,
"\xb3"=>0,
"\xb4"=>0,
"\xb5"=>0,
"\xb6"=>0,
"\xb7"=>0,
68 "\xb8"=>0,
"\xb9"=>0,
"\xba"=>0,
"\xbb"=>0,
"\xbc"=>0,
"\xbd"=>0,
"\xbe"=>0,
"\xbf"=>0,
69 "\xc0"=>2,
"\xc1"=>2,
"\xc2"=>2,
"\xc3"=>2,
"\xc4"=>2,
"\xc5"=>2,
"\xc6"=>2,
"\xc7"=>2,
70 "\xc8"=>2,
"\xc9"=>2,
"\xca"=>2,
"\xcb"=>2,
"\xcc"=>2,
"\xcd"=>2,
"\xce"=>2,
"\xcf"=>2,
71 "\xd0"=>2,
"\xd1"=>2,
"\xd2"=>2,
"\xd3"=>2,
"\xd4"=>2,
"\xd5"=>2,
"\xd6"=>2,
"\xd7"=>2,
72 "\xd8"=>2,
"\xd9"=>2,
"\xda"=>2,
"\xdb"=>2,
"\xdc"=>2,
"\xdd"=>2,
"\xde"=>2,
"\xdf"=>2,
73 "\xe0"=>3,
"\xe1"=>3,
"\xe2"=>3,
"\xe3"=>3,
"\xe4"=>3,
"\xe5"=>3,
"\xe6"=>3,
"\xe7"=>3,
74 "\xe8"=>3,
"\xe9"=>3,
"\xea"=>3,
"\xeb"=>3,
"\xec"=>3,
"\xed"=>3,
"\xee"=>3,
"\xef"=>3,
75 "\xf0"=>4,
"\xf1"=>4,
"\xf2"=>4,
"\xf3"=>4,
"\xf4"=>4,
"\xf5"=>4,
"\xf6"=>4,
"\xf7"=>4,
76 "\xf8"=>5,
"\xf9"=>5,
"\xfa"=>5,
"\xfb"=>5,
"\xfc"=>6,
"\xfd"=>6,
"\xfe"=>0,
"\xff"=>0,
89 if (!isset($currentMap[
'i']) || !isset($currentMap[
'p']))
91 $currentMap[
'p'] = $currentMap[
'i'] = array();
93 $strlen=strlen($string);
94 $charPos=count($currentMap[
'p']);
97 for (
$i=0;
$i<$strlen; ++
$i)
100 $size=self::$s_length_map[$char];
112 $currentMap[
'p'][$charPos+$foundChars]=$startOffset+
$i;
113 $currentMap[
'i'][$charPos+$foundChars]=
true;
117 if ((
$i+$size) > $strlen){
118 $ignoredChars=substr($string,
$i);
121 for ($j=1; $j<$size; ++$j)
123 $char=$string[
$i+$j];
124 if ($char>
"\x7F" && $char<
"\xC0")
136 $lastChar=$currentMap[
'p'][$charPos+$foundChars]=$startOffset+
$i+$size;
150 return self::MAP_TYPE_POSITIONS;
167 $needed = self::$length_map[$bytes[0]] - $size;
168 return ($needed > -1)