@@ -166,16 +166,115 @@ public static function binarySearch($elem, $array, $cmp_fn)
166
166
167
167
/**
168
168
* Remove acentos e caracteres especiais do texto
169
- * @param string $str string com caracteres especiais
169
+ * @param string $text string com caracteres especiais
170
170
* @return string texto no formato ANSI sem caracteres especiais
171
171
*/
172
- public static function removeAccent ($ str )
172
+ public static function removeAccent ($ text )
173
173
{
174
- return strtr (
175
- utf8_decode ($ str ),
176
- utf8_decode (self ::ACCENT_CHARS ),
177
- self ::NORMAL_CHARS
178
- );
174
+ if (!preg_match ('/[\x80-\xff]/ ' , $ text )) {
175
+ return $ text ;
176
+ }
177
+
178
+ $ chars = [
179
+ // Decompositions for Latin-1 Supplement
180
+ chr (195 ) . chr (128 ) => 'A ' , chr (195 ) . chr (129 ) => 'A ' ,
181
+ chr (195 ) . chr (130 ) => 'A ' , chr (195 ) . chr (131 ) => 'A ' ,
182
+ chr (195 ) . chr (132 ) => 'A ' , chr (195 ) . chr (133 ) => 'A ' ,
183
+ chr (195 ) . chr (135 ) => 'C ' , chr (195 ) . chr (136 ) => 'E ' ,
184
+ chr (195 ) . chr (137 ) => 'E ' , chr (195 ) . chr (138 ) => 'E ' ,
185
+ chr (195 ) . chr (139 ) => 'E ' , chr (195 ) . chr (140 ) => 'I ' ,
186
+ chr (195 ) . chr (141 ) => 'I ' , chr (195 ) . chr (142 ) => 'I ' ,
187
+ chr (195 ) . chr (143 ) => 'I ' , chr (195 ) . chr (145 ) => 'N ' ,
188
+ chr (195 ) . chr (146 ) => 'O ' , chr (195 ) . chr (147 ) => 'O ' ,
189
+ chr (195 ) . chr (148 ) => 'O ' , chr (195 ) . chr (149 ) => 'O ' ,
190
+ chr (195 ) . chr (150 ) => 'O ' , chr (195 ) . chr (153 ) => 'U ' ,
191
+ chr (195 ) . chr (154 ) => 'U ' , chr (195 ) . chr (155 ) => 'U ' ,
192
+ chr (195 ) . chr (156 ) => 'U ' , chr (195 ) . chr (157 ) => 'Y ' ,
193
+ chr (195 ) . chr (159 ) => 's ' , chr (195 ) . chr (160 ) => 'a ' ,
194
+ chr (195 ) . chr (161 ) => 'a ' , chr (195 ) . chr (162 ) => 'a ' ,
195
+ chr (195 ) . chr (163 ) => 'a ' , chr (195 ) . chr (164 ) => 'a ' ,
196
+ chr (195 ) . chr (165 ) => 'a ' , chr (195 ) . chr (167 ) => 'c ' ,
197
+ chr (195 ) . chr (168 ) => 'e ' , chr (195 ) . chr (169 ) => 'e ' ,
198
+ chr (195 ) . chr (170 ) => 'e ' , chr (195 ) . chr (171 ) => 'e ' ,
199
+ chr (195 ) . chr (172 ) => 'i ' , chr (195 ) . chr (173 ) => 'i ' ,
200
+ chr (195 ) . chr (174 ) => 'i ' , chr (195 ) . chr (175 ) => 'i ' ,
201
+ chr (195 ) . chr (177 ) => 'n ' , chr (195 ) . chr (178 ) => 'o ' ,
202
+ chr (195 ) . chr (179 ) => 'o ' , chr (195 ) . chr (180 ) => 'o ' ,
203
+ chr (195 ) . chr (181 ) => 'o ' , chr (195 ) . chr (182 ) => 'o ' ,
204
+ chr (195 ) . chr (182 ) => 'o ' , chr (195 ) . chr (185 ) => 'u ' ,
205
+ chr (195 ) . chr (186 ) => 'u ' , chr (195 ) . chr (187 ) => 'u ' ,
206
+ chr (195 ) . chr (188 ) => 'u ' , chr (195 ) . chr (189 ) => 'y ' ,
207
+ chr (195 ) . chr (191 ) => 'y ' ,
208
+ // Decompositions for Latin Extended-A
209
+ chr (196 ) . chr (128 ) => 'A ' , chr (196 ) . chr (129 ) => 'a ' ,
210
+ chr (196 ) . chr (130 ) => 'A ' , chr (196 ) . chr (131 ) => 'a ' ,
211
+ chr (196 ) . chr (132 ) => 'A ' , chr (196 ) . chr (133 ) => 'a ' ,
212
+ chr (196 ) . chr (134 ) => 'C ' , chr (196 ) . chr (135 ) => 'c ' ,
213
+ chr (196 ) . chr (136 ) => 'C ' , chr (196 ) . chr (137 ) => 'c ' ,
214
+ chr (196 ) . chr (138 ) => 'C ' , chr (196 ) . chr (139 ) => 'c ' ,
215
+ chr (196 ) . chr (140 ) => 'C ' , chr (196 ) . chr (141 ) => 'c ' ,
216
+ chr (196 ) . chr (142 ) => 'D ' , chr (196 ) . chr (143 ) => 'd ' ,
217
+ chr (196 ) . chr (144 ) => 'D ' , chr (196 ) . chr (145 ) => 'd ' ,
218
+ chr (196 ) . chr (146 ) => 'E ' , chr (196 ) . chr (147 ) => 'e ' ,
219
+ chr (196 ) . chr (148 ) => 'E ' , chr (196 ) . chr (149 ) => 'e ' ,
220
+ chr (196 ) . chr (150 ) => 'E ' , chr (196 ) . chr (151 ) => 'e ' ,
221
+ chr (196 ) . chr (152 ) => 'E ' , chr (196 ) . chr (153 ) => 'e ' ,
222
+ chr (196 ) . chr (154 ) => 'E ' , chr (196 ) . chr (155 ) => 'e ' ,
223
+ chr (196 ) . chr (156 ) => 'G ' , chr (196 ) . chr (157 ) => 'g ' ,
224
+ chr (196 ) . chr (158 ) => 'G ' , chr (196 ) . chr (159 ) => 'g ' ,
225
+ chr (196 ) . chr (160 ) => 'G ' , chr (196 ) . chr (161 ) => 'g ' ,
226
+ chr (196 ) . chr (162 ) => 'G ' , chr (196 ) . chr (163 ) => 'g ' ,
227
+ chr (196 ) . chr (164 ) => 'H ' , chr (196 ) . chr (165 ) => 'h ' ,
228
+ chr (196 ) . chr (166 ) => 'H ' , chr (196 ) . chr (167 ) => 'h ' ,
229
+ chr (196 ) . chr (168 ) => 'I ' , chr (196 ) . chr (169 ) => 'i ' ,
230
+ chr (196 ) . chr (170 ) => 'I ' , chr (196 ) . chr (171 ) => 'i ' ,
231
+ chr (196 ) . chr (172 ) => 'I ' , chr (196 ) . chr (173 ) => 'i ' ,
232
+ chr (196 ) . chr (174 ) => 'I ' , chr (196 ) . chr (175 ) => 'i ' ,
233
+ chr (196 ) . chr (176 ) => 'I ' , chr (196 ) . chr (177 ) => 'i ' ,
234
+ chr (196 ) . chr (178 ) => 'IJ ' , chr (196 ) . chr (179 ) => 'ij ' ,
235
+ chr (196 ) . chr (180 ) => 'J ' , chr (196 ) . chr (181 ) => 'j ' ,
236
+ chr (196 ) . chr (182 ) => 'K ' , chr (196 ) . chr (183 ) => 'k ' ,
237
+ chr (196 ) . chr (184 ) => 'k ' , chr (196 ) . chr (185 ) => 'L ' ,
238
+ chr (196 ) . chr (186 ) => 'l ' , chr (196 ) . chr (187 ) => 'L ' ,
239
+ chr (196 ) . chr (188 ) => 'l ' , chr (196 ) . chr (189 ) => 'L ' ,
240
+ chr (196 ) . chr (190 ) => 'l ' , chr (196 ) . chr (191 ) => 'L ' ,
241
+ chr (197 ) . chr (128 ) => 'l ' , chr (197 ) . chr (129 ) => 'L ' ,
242
+ chr (197 ) . chr (130 ) => 'l ' , chr (197 ) . chr (131 ) => 'N ' ,
243
+ chr (197 ) . chr (132 ) => 'n ' , chr (197 ) . chr (133 ) => 'N ' ,
244
+ chr (197 ) . chr (134 ) => 'n ' , chr (197 ) . chr (135 ) => 'N ' ,
245
+ chr (197 ) . chr (136 ) => 'n ' , chr (197 ) . chr (137 ) => 'N ' ,
246
+ chr (197 ) . chr (138 ) => 'n ' , chr (197 ) . chr (139 ) => 'N ' ,
247
+ chr (197 ) . chr (140 ) => 'O ' , chr (197 ) . chr (141 ) => 'o ' ,
248
+ chr (197 ) . chr (142 ) => 'O ' , chr (197 ) . chr (143 ) => 'o ' ,
249
+ chr (197 ) . chr (144 ) => 'O ' , chr (197 ) . chr (145 ) => 'o ' ,
250
+ chr (197 ) . chr (146 ) => 'OE ' , chr (197 ) . chr (147 ) => 'oe ' ,
251
+ chr (197 ) . chr (148 ) => 'R ' , chr (197 ) . chr (149 ) => 'r ' ,
252
+ chr (197 ) . chr (150 ) => 'R ' , chr (197 ) . chr (151 ) => 'r ' ,
253
+ chr (197 ) . chr (152 ) => 'R ' , chr (197 ) . chr (153 ) => 'r ' ,
254
+ chr (197 ) . chr (154 ) => 'S ' , chr (197 ) . chr (155 ) => 's ' ,
255
+ chr (197 ) . chr (156 ) => 'S ' , chr (197 ) . chr (157 ) => 's ' ,
256
+ chr (197 ) . chr (158 ) => 'S ' , chr (197 ) . chr (159 ) => 's ' ,
257
+ chr (197 ) . chr (160 ) => 'S ' , chr (197 ) . chr (161 ) => 's ' ,
258
+ chr (197 ) . chr (162 ) => 'T ' , chr (197 ) . chr (163 ) => 't ' ,
259
+ chr (197 ) . chr (164 ) => 'T ' , chr (197 ) . chr (165 ) => 't ' ,
260
+ chr (197 ) . chr (166 ) => 'T ' , chr (197 ) . chr (167 ) => 't ' ,
261
+ chr (197 ) . chr (168 ) => 'U ' , chr (197 ) . chr (169 ) => 'u ' ,
262
+ chr (197 ) . chr (170 ) => 'U ' , chr (197 ) . chr (171 ) => 'u ' ,
263
+ chr (197 ) . chr (172 ) => 'U ' , chr (197 ) . chr (173 ) => 'u ' ,
264
+ chr (197 ) . chr (174 ) => 'U ' , chr (197 ) . chr (175 ) => 'u ' ,
265
+ chr (197 ) . chr (176 ) => 'U ' , chr (197 ) . chr (177 ) => 'u ' ,
266
+ chr (197 ) . chr (178 ) => 'U ' , chr (197 ) . chr (179 ) => 'u ' ,
267
+ chr (197 ) . chr (180 ) => 'W ' , chr (197 ) . chr (181 ) => 'w ' ,
268
+ chr (197 ) . chr (182 ) => 'Y ' , chr (197 ) . chr (183 ) => 'y ' ,
269
+ chr (197 ) . chr (184 ) => 'Y ' , chr (197 ) . chr (185 ) => 'Z ' ,
270
+ chr (197 ) . chr (186 ) => 'z ' , chr (197 ) . chr (187 ) => 'Z ' ,
271
+ chr (197 ) . chr (188 ) => 'z ' , chr (197 ) . chr (189 ) => 'Z ' ,
272
+ chr (197 ) . chr (190 ) => 'z ' , chr (197 ) . chr (191 ) => 's ' ,
273
+ ];
274
+
275
+ $ text = strtr ($ text , $ chars );
276
+
277
+ return $ text ;
179
278
}
180
279
181
280
/**
@@ -270,7 +369,7 @@ public static function addAttribute($element, $name, $text)
270
369
{
271
370
$ dom = $ element ->ownerDocument ;
272
371
$ node = $ element ->appendChild ($ dom ->createAttribute ($ name ));
273
- $ node ->appendChild ($ dom ->createTextNode ($ text ));
372
+ $ node ->appendChild ($ dom ->createTextNode ($ text ?? '' ));
274
373
return $ node ;
275
374
}
276
375
0 commit comments