4

我正在尝试清理数据库输入并发现 Ⓡ 字符存在问题。

Ⓡ 转换为

Ⓡ

即使在变量周围使用 html_entity_decode。

这是一个问题,因为该字段仅允许在数据库中使用 4 个字符。

® 实际有效并被视为单个字符。

我对Ⓒ vs © 有同样的问题。

据我所知,它们只是 html 实体,因此应该被解码。然而,它们甚至没有用 htmlspecialchars() 编码。它只是呼应了代码

Ⓡ

PHP是否有任何内置函数来解决这个问题?谢谢

编辑只是为了说出我想要做的事情:

我有文本字段要输入并添加到下表中显示的数据库。当我输入任何其他字符(如 < > &)时,它会作为一个字符直接进入数据库。

我试图让 Ⓡ 和 Ⓒ 也总是作为一个字符出现(而​​不是 6 个)。

我只对表中的输出进行编码,因此某些字符不会破坏网站。

4

1 回答 1

2

实体在使用时不解码的问题html_entity_decode很可能是给定的目标字符集html_entity_decode仍然是默认的ISO-8859-1。ISO-8859-1 不能编码“Ⓡ”(圆圈字母 R),但可以编码“®”(注册标记)。

所以,首先,要正确解码:

html_entity_decode('&#9415;', ENT_COMPAT, 'UTF-8')

但其次,“Ⓡ”和“®”不是同一个字符,您可能不想要“Ⓡ”。

于 2013-07-05T14:32:32.360 回答