我正在使用htmlspecialchars
从管理网络表单打印非HTML数据。问题是HTML实体和类似®的unicode字符/符号打印®
或★由于&符号被转换而打印为★
。
我知道我可以用&
替换所有&
以解决此问题,但仅在打印&符号时这是不合适的。
转换特殊字符的好方法是什么,除了符号之前的&符号外?
答案 0 :(得分:1)
听起来你有一个已经部分编码的字符串。再次编码会导致您描述的问题。
要解决这个问题,您可以先解码字符串,然后再对其进行编码:
$encoded_string = htmlspecialchars(html_entity_decode($partially_encoded_string));
修改:如果所有字符都需要编码,则可以使用htmlentities()
代替:
$encoded_string = htmlentities(html_entity_decode($partially_encoded_string));