File tree 1 file changed +30
-16
lines changed
1 file changed +30
-16
lines changed Original file line number Diff line number Diff line change @@ -100,28 +100,42 @@ public static function chr(int $code): string
100
100
101
101
public static function ord (string $ ch ): int
102
102
{
103
+ if ($ ch === '' ) {
104
+ throw new InvalidValueException ($ ch , "UTF-8 character " );
105
+ }
106
+
103
107
$ ord0 = ord ($ ch [0 ]);
104
- if ($ ord0 >= 0 && $ ord0 <= 127 ) {
108
+ if ($ ord0 <= 127 ) {
105
109
return $ ord0 ;
106
- }
107
- $ ord1 = ord ($ ch [1 ]);
108
- if ( $ ord0 >= 192 && $ ord0 <= 223 ) {
110
+ } elseif ( $ ord0 >= 192 && $ ord0 <= 223 && strlen ( $ ch ) >= 2 ) {
111
+ $ ord1 = ord ($ ch [1 ]);
112
+
109
113
return ($ ord0 - 192 ) * 64 + ($ ord1 - 128 );
110
- }
111
- $ ord2 = ord ($ ch [2 ]);
112
- if ($ ord0 >= 224 && $ ord0 <= 239 ) {
114
+ } elseif ($ ord0 >= 224 && $ ord0 <= 239 && strlen ($ ch ) >= 3 ) {
115
+ $ ord1 = ord ($ ch [1 ]);
116
+ $ ord2 = ord ($ ch [2 ]);
117
+
113
118
return ($ ord0 - 224 ) * 4096 + ($ ord1 - 128 ) * 64 + ($ ord2 - 128 );
114
- }
115
- $ ord3 = ord ($ ch [3 ]);
116
- if ($ ord0 >= 240 && $ ord0 <= 247 ) {
119
+ } elseif ($ ord0 >= 240 && $ ord0 <= 247 && strlen ($ ch ) >= 4 ) {
120
+ $ ord1 = ord ($ ch [1 ]);
121
+ $ ord2 = ord ($ ch [2 ]);
122
+ $ ord3 = ord ($ ch [3 ]);
123
+
117
124
return ($ ord0 - 240 ) * 262144 + ($ ord1 - 128 ) * 4096 + ($ ord2 - 128 ) * 64 + ($ ord3 - 128 );
118
- }
119
- $ ord4 = ord ($ ch [4 ]);
120
- if ($ ord0 >= 248 && $ ord0 <= 251 ) {
125
+ } elseif ($ ord0 >= 248 && $ ord0 <= 251 && strlen ($ ch ) >= 5 ) {
126
+ $ ord1 = ord ($ ch [1 ]);
127
+ $ ord2 = ord ($ ch [2 ]);
128
+ $ ord3 = ord ($ ch [3 ]);
129
+ $ ord4 = ord ($ ch [4 ]);
130
+
121
131
return ($ ord0 - 248 ) * 16777216 + ($ ord1 - 128 ) * 262144 + ($ ord2 - 128 ) * 4096 + ($ ord3 - 128 ) * 64 + ($ ord4 - 128 );
122
- }
123
- $ ord5 = ord ($ ch [5 ]);
124
- if ($ ord0 >= 252 && $ ord0 <= 253 ) {
132
+ } elseif ($ ord0 >= 252 && $ ord0 <= 253 && strlen ($ ch ) >= 6 ) {
133
+ $ ord1 = ord ($ ch [1 ]);
134
+ $ ord2 = ord ($ ch [2 ]);
135
+ $ ord3 = ord ($ ch [3 ]);
136
+ $ ord4 = ord ($ ch [4 ]);
137
+ $ ord5 = ord ($ ch [5 ]);
138
+
125
139
return ($ ord0 - 252 ) * 1073741824 + ($ ord1 - 128 ) * 16777216 + ($ ord2 - 128 ) * 262144 + ($ ord3 - 128 ) * 4096 + ($ ord4 - 128 ) * 64 + ($ ord5 - 128 );
126
140
}
127
141
You can’t perform that action at this time.
0 commit comments