2010-10-07 144 views
5

我正在为客户开发CMS,他需要编辑东西并使用特殊字符,如ç®。但是,我不希望他必须输入像®这样的字符代码。有谁知道使用PHP自动转换这些字符的好方法吗?将特殊字符转换为HTML字符代码

+4

Err。只要确保你的字符编码是一致的(即全部使用UTF-8),并且你不需要将这些字符转换为完美显示。 – Quentin 2010-10-07 14:29:25

回答

14

您可以使用ヶ辆()来做到这一点。

php -r 'echo htmlentities("®ç", ENT_COMPAT, "UTF-8"), "\n";' 
®ç 

要打开实体回可读文本,使用html_entity_decode():

php -r 'echo html_entity_decode("®ç", ENT_COMPAT, "UTF-8"), "\n";' 
®ç 

如果你不使用Unicode,忽略字符集名称或给出正确的字符集。

+1

+1用于指定编码。 – 2010-10-07 14:35:20

+0

梦幻般的答案,解决了我几年来所遇到的问题。值得注意的是,当您将代码从操作系统移至操作系统时,提及复制粘贴或硬编码ALT KeyCode版本符号的其他答案将不起作用。 – 2012-09-14 03:54:18

2

使用Unicode,并告诉他如何&粘贴从字符映射表复制:-)

+4

-1。这是什么答案? – 2010-10-07 14:23:03

+3

@Alin如果客户端已经在使用像ç和®这样的字符,那么使用UTF-8(例如CMS的输入,存储和输出)将启用你不需要HTML实体。就像它在这个网页上做的那样,例如,我刚输入“®”,将它发送到网站,并且网站显示为“®” - 查看此页的源代码,在那里看不到一个HTML实体,只是真实的,真实的人物。 – 2010-10-07 14:27:28

+0

@MattGibson一个问题是,如果您使用源代码管理,并且您将代码在基于Unix的操作系统和Windows操作系统之间来回移动。我已经学会了艰难的方式,ALT键码无法按照您希望它们跨操作系统的方式工作。 – 2012-09-14 03:08:50

1

您可以使用:

htmlentities

+0

谢谢!它的工作原理:) – 2010-10-07 14:37:42

3

最简单的办法是使用UTF-8从一开始。
但你也可以自动转换字符DOM:

$dom = new DOMDocument; 
$dom->appendChild(new DOMText('© oui içi » ')); 
echo $dom->saveHtml(); 

输出

© oui içi » 
0

看看htmlentities函数。这需要一个字符串并将组件字符转换为它们的HTML实体。您可以指定字符串的编码以与用户的输入保持一致。

+0

谢谢!有用 :) – 2010-10-07 14:41:35