<?php
function mb_detect_encoding2 ($string, $enc=null, $ret=null) {
static $enclist = array(
'UTF-8', 'ASCII',
'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4', 'ISO-8859-5',
'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9', 'ISO-8859-10',
'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16',
'Windows-1251', 'Windows-1252', 'Windows-1254',
);
$result = false;
foreach ($enclist as $item) {
$sample = iconv($item, $item, $string);
if (md5($sample) == md5($string)) {
if ($ret === NULL) { $result = $item; } else { $result = $item; }
break;
}
}
return $result;
}
$strings = array(
'ASCII' => 'ASCII',
'UTF-8' => "Tr\xc3\xb6t",
'Windows-1252 with ASCII' => "Tr\xf6t",
'Windows-1252 only' => "\xf6\xfd\x80",
'Windows-1252 only with an undefined character' => "\xf6\xfd\x81",
);
$detect = array('ASCII', 'Windows-1252', 'UTF-8');
foreach ($strings as $name => $string) {
$detected_loose = mb_detect_encoding2($string, $detect, true);
$detected_strict = mb_detect_encoding2($string, $detect, false);
if ($detected_loose === $detected_strict) {
if ($detected_loose === false) {
echo "'$name' could not be detected!\n";
} else {
echo "'$name' was detected as $detected_loose\n";
}
} else {
echo "'$name' was "
. ($detected_loose === false ? 'not detected' : "detected as $detected_loose")
. ' in loose mode, but '
. ($detected_strict === false ? 'not detected' : "detected as $detected_strict")
. " in strict mode\n";
}
}
preferences:
45.58 ms | 402 KiB | 5 Q