Я работал с преобразованием строк в 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)
Если я использовал неправильнотерминология, мои извинения.
Заранее спасибо.