| @@ 1261-1281 (lines=21) @@ | ||
| 1258 | public static function isUtf8($Str) |
|
| 1259 | { # by bmorel at ssi dot fr |
|
| 1260 | for ($i = 0, $iMax = strlen($Str); $i < $iMax; ++$i) { |
|
| 1261 | if (ord($Str[$i]) < 0x80) { |
|
| 1262 | continue; |
|
| 1263 | } # 0bbbbbbb |
|
| 1264 | elseif ((ord($Str[$i]) & 0xE0) == 0xC0) { |
|
| 1265 | $n = 1; |
|
| 1266 | } # 110bbbbb |
|
| 1267 | elseif ((ord($Str[$i]) & 0xF0) == 0xE0) { |
|
| 1268 | $n = 2; |
|
| 1269 | } # 1110bbbb |
|
| 1270 | elseif ((ord($Str[$i]) & 0xF8) == 0xF0) { |
|
| 1271 | $n = 3; |
|
| 1272 | } # 11110bbb |
|
| 1273 | elseif ((ord($Str[$i]) & 0xFC) == 0xF8) { |
|
| 1274 | $n = 4; |
|
| 1275 | } # 111110bb |
|
| 1276 | elseif ((ord($Str[$i]) & 0xFE) == 0xFC) { |
|
| 1277 | $n = 5; |
|
| 1278 | } # 1111110b |
|
| 1279 | else { |
|
| 1280 | return false; |
|
| 1281 | } # Does not match any model |
|
| 1282 | for ($j = 0; $j < $n; ++$j) { # n bytes matching 10bbbbbb follow ? |
|
| 1283 | if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) { |
|
| 1284 | return false; |
|
| @@ 720-726 (lines=7) @@ | ||
| 717 | ||
| 718 | function lx_seemsUtf8($Str) { # by bmorel at ssi dot fr |
|
| 719 | for ($i=0; $i<strlen($Str); $i++) { |
|
| 720 | if (ord($Str[$i]) < 0x80) continue; # 0bbbbbbb |
|
| 721 | elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb |
|
| 722 | elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb |
|
| 723 | elseif ((ord($Str[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb |
|
| 724 | elseif ((ord($Str[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb |
|
| 725 | elseif ((ord($Str[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b |
|
| 726 | else return false; # Does not match any model |
|
| 727 | for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? |
|
| 728 | if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) |
|
| 729 | return false; |
|