Я работал с преобразованием строк в PDF-файлы. Типичная проблема, которая возникает, — это случайная «умная кавычка» или другой символ utf-8, который становится тем или иным символом ISO, таким как «», «», «,», и т. д. Функция, определенная ниже, решает указанную выше проблему. проблема с кодированием их в html-объекты, однако, конечно, PDF-файл не является html. При вводе строки с ’
вместо апострофа ’
функция преобразует ее в ’
. Это здорово, если бы мы имели дело с HTML, но в формате PDF он обрабатывает его как строку, и поэтому его точная форма никогда не преобразуется. Следовательно, как преобразовать htmlentity в точную форму символов?
function htmlallentities($str){
$res = '';
$strlen = strlen($str);
for($i=0; $i<$strlen; $i++){
$byte = ord($str[$i]);
if($byte < 128) { // 1-byte char
$res .= $str[$i];
} elseif($byte < 192) { // invalid utf8
} elseif($byte < 224) { // 2-byte char
$res .= '&#'.((63&$byte)*64 + (63&ord($str[++$i]))).';';
} elseif($byte < 240) { // 3-byte char
$res .= '&#'.((15&$byte)*4096 + (63&ord($str[++$i]))*64 + (63&ord($str[++$i]))).';';
} elseif($byte < 248) { // 4-byte char
$res .= '&#'.((15&$byte)*262144 + (63&ord($str[++$i]))*4096 + (63&ord($str[++$i]))*64 + (63&ord($str[++$i]))).';';
}
}
return $res;
}
(С благодарностью @Floern, https://stackoverflow.com/a/4583465/810821)
Если я использовал неправильную терминологию, мои извинения.
Заранее спасибо.