文字列をPDFに変換する作業をしています。典型的な問題は、「スマートクォート」や他のutf-8文字で、これはâ€、â€、â€などのISO文字になります。以下に定義されている機能は、しかし、もちろん、PDFはhtmlではありません。 ’
の文字列をアポストロフィ’
の位置に入力すると、この関数は’
に変換します。 HTMLを扱っていれば素晴らしいですが、PDFとしては文字列として扱われるため、フォームは決して変換されません。したがって、どのようにhtmlentityを文字正確なフォームに変換しますか? (@Floernのおかげで、https://stackoverflow.com/a/4583465/810821)スマート引用符などのエンティティを正確な形式に変換する
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;
}
私は間違った用語を使用している場合は
、私の謝罪。
ありがとうございます。