| @@ 1267-1287 (lines=21) @@ | ||
| 1264 | public static function isUtf8($Str) |
|
| 1265 | { # by bmorel at ssi dot fr |
|
| 1266 | for ($i = 0, $iMax = strlen($Str); $i < $iMax; ++$i) { |
|
| 1267 | if (ord($Str[$i]) < 0x80) { |
|
| 1268 | continue; |
|
| 1269 | } # 0bbbbbbb |
|
| 1270 | elseif ((ord($Str[$i]) & 0xE0) == 0xC0) { |
|
| 1271 | $n = 1; |
|
| 1272 | } # 110bbbbb |
|
| 1273 | elseif ((ord($Str[$i]) & 0xF0) == 0xE0) { |
|
| 1274 | $n = 2; |
|
| 1275 | } # 1110bbbb |
|
| 1276 | elseif ((ord($Str[$i]) & 0xF8) == 0xF0) { |
|
| 1277 | $n = 3; |
|
| 1278 | } # 11110bbb |
|
| 1279 | elseif ((ord($Str[$i]) & 0xFC) == 0xF8) { |
|
| 1280 | $n = 4; |
|
| 1281 | } # 111110bb |
|
| 1282 | elseif ((ord($Str[$i]) & 0xFE) == 0xFC) { |
|
| 1283 | $n = 5; |
|
| 1284 | } # 1111110b |
|
| 1285 | else { |
|
| 1286 | return false; |
|
| 1287 | } # Does not match any model |
|
| 1288 | for ($j = 0; $j < $n; ++$j) { # n bytes matching 10bbbbbb follow ? |
|
| 1289 | if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) { |
|
| 1290 | return false; |
|
| @@ 872-878 (lines=7) @@ | ||
| 869 | ||
| 870 | function lx_seemsUtf8($Str) { # by bmorel at ssi dot fr |
|
| 871 | for ($i=0; $i<strlen($Str); $i++) { |
|
| 872 | if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb |
|
| 873 | elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb |
|
| 874 | elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb |
|
| 875 | elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb |
|
| 876 | elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb |
|
| 877 | elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b |
|
| 878 | else return false; # Does not match any model |
|
| 879 | for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? |
|
| 880 | if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) |
|
| 881 | return false; |
|