将特殊字符转换为 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 字符代码的主要内容,如果未能解决你的问题,请参考以下文章