我有一个字符串来找我,格式如下
Ciel Spa at SLSâ„¢ is a celestial dreamscape
我有一个格式化脚本,将其更改为
Ciel Spa at SLS™ is a celestial dreamscape
脚本更改编码
return iconv("UTF-8", "ISO-8859-1//TRANSLIT//IGNORE", $str)
上面的 iconv() 通常会将商标符号作为普通字符 TM 返回。这对我不起作用,因此我将符号替换为稍后可以捕获的字符串。
str_replace("(TM)","™",$str);
当我在浏览器中查看源代码时效果很好,但是当我将此文本推送到 imagettftext() 时,商标符号被忽略,有效地制作了字符串
Ciel Spa at SLS is a celestial dreamscape
但当然渲染为图像。
我知道我使用的字体支持商标符号,但我不确定它为什么会消失。mb_detect_encoding() 返回 null,而对于我的大多数字符串,它返回 UTF-8。
我已经准备好接受一个坚韧不拔、肮脏的解决方法,因为到目前为止还没有任何效果。我尝试使用 html_entity_decode() 和 str_replace() 的组合无济于事。相同格式化脚本的早期版本组合了长数组 UTF 垃圾字符替换,而不更改字符串的编码,然后将其提供给 imagettftext() 并且看起来很好。我似乎无法找回...任何想法?