将特殊字符转换为 HTML 字符代码

Posted

技术标签:

【中文标题】将特殊字符转换为 HTML 字符代码【英文标题】:Convert special characters to HTML character codes 【发布时间】:2011-04-22 09:45:00 【问题描述】:

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

【问题讨论】:

错误。只需确保您的字符编码是一致的(即始终使用 UTF-8),您无需转换这些字符即可完美显示。 【参考方案1】:

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

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

要将实体转回可读文本,请使用 html_entity_decode():

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

如果您不使用 unicode,请省略字符集名称或提供正确的字符集。

【讨论】:

解决了我几年来一直困扰的问题的绝妙答案。值得注意的是,当您将代码从操作系统移动到操作系统时,其他一些提到复制粘贴或硬编码符号的 ALT KeyCode 版本的答案将不起作用。【参考方案2】:

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

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

输出

© oui içi » 

【讨论】:

【参考方案3】:

使用 unicode,并向他展示如何从字符映射中复制和粘贴 :-)

【讨论】:

@Alin 我想说,这不是一个那个坏的答案——如果客户端已经在使用像ç和®这样的字符,那么使用UTF-8,比如说, CMS 的输入、存储和输出将使您不再需要 HTML 实体。就像在这个网页上所做的那样,例如,我刚刚输入“®”,将其发送到站点,并且该站点将其显示为“®”——查看此页面的源代码,你就赢了'在那里看不到 HTML 实体,只是实际的、真实的字符。 @MattGibson 一个问题是,如果您使用源代码控制并且在基于 unix 的操作系统和 Windows 操作系统之间来回移动代码。我已经了解到 ALT 键代码在操作系统中无法按照您希望的方式工作。【参考方案4】:

你可以使用:

htmlentities

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于将特殊字符转换为 HTML 字符代码的主要内容,如果未能解决你的问题,请参考以下文章

将MySql中的特殊的HTML字符转换成普通文本

HTML转义为实体,实体转回为HTML,特殊字符转换

浅析PHP中处理HTML特殊字符转换

PHP怎么将HTML实体转换为普通字符

怎样将中文字符和特殊符号转换成html实体字符

将特殊字符转换为普通字符