我正在使用imagettftext来创建某些文本字符的图像。为此,我需要将一个十六进制字符代码数组转换为它们的HTML等价物,我似乎无法找到PHP内置的任何功能来执行此操作。我错过了什么? (通过搜索,我遇到了这个:PHP function imagettftext() and unicode,但是没有一个答案似乎做我需要的 - 一些字符转换但大多数没有。)
这是生成的HTML表示(在浏览器中)
[characters] => Array
(
[33] => A
[34] => B
[35] => C
[36] => D
[37] => E
[38] => F
[39] => G
[40] => H
[41] => I
[42] => J
[43] => K
[44] => L
)
来自此数组(无法在imagettftext中呈现):
[characters] => Array
(
[33] => A
[34] => B
[35] => C
[36] => D
[37] => E
[38] => F
[39] => G
[40] => H
[41] => I
[42] => J
[43] => K
[44] => L
)
答案 0 :(得分:4)
基于PHP手册中的a sample,您可以使用正则表达式执行此操作:
$newText = preg_replace('/&#x([a-f0-9]+)/mei', 'chr(0x\\1)', $oldText);
我不确定原始html_entity_decode()
是否适用于您的情况,因为您的数组元素缺少尾随;
- 这些实体的必要部分。
编辑,2015年7月:
在回应Ben的评论时注意到/e
修饰符被弃用,以下是使用preg_replace_callback()
和匿名函数编写此内容的方法:
$newText = preg_replace_callback(
'/&#x([a-f0-9]+)/mi',
function ($m) {
return chr(hexdec($m[1]));
},
$oldText
);
答案 1 :(得分:0)
嗯,你显然没有足够的搜索。的 html_entity_decode()
强>