7

我将外语字符串存储在 utf8 中。在显示它们时,我希望它们以重音字符成为它们的 html 对应物的方式进行转换,例如é变成é

但是,我用短语搜索,我能找到的只是htmlentities()哪个不这样做。

4

3 回答 3

13

我发现这是解决这个问题的一个非常简单的方法。

第一部分尝试对文本进行编码。如果 $output 返回一个空白字符串,则该值是 utf8 编码的,然后创建 html 实体。

$output = htmlentities($value, 0, "UTF-8");
if ($output == "") {
    $output = htmlentities(utf8_encode($value), 0, "UTF-8");
}

例子:

Montréal

输出:

Montréal
于 2015-02-06T18:58:18.823 回答
12

确保在调用时正确指定了编码htmlentities()

文档显示它默认为'UTF-8',但如果您进一步阅读,您会发现这是 PHP 5.4 的新内容。如果您使用的是旧版本,则默认值实际上是'ISO-8859-1',并且您需要确保明确指定它'UTF-8'而不是依赖默认行为。

htmlentities($string, 0, 'UTF-8');
于 2013-07-12T22:38:08.080 回答
1

这是作为对另一个答案的评论发布的,但这正是我所需要的,所以我将它作为自己的答案发布:

在某些情况下,您想为重音字符(à、è、ì、ò、ù、...)生成实体,但又想保留 HTML 代码(因此不要省略“<”和“>”并避免转义已经转义实体。在这些情况下,您可以使用以下代码:

$string = str_replace(array("&lt;", "&gt;"), array("<", ">"), htmlentities($string, ENT_NOQUOTES, 'UTF-8', FALSE)); 

此代码与 PHP >= 5.2.3 兼容

来源

于 2021-09-09T17:53:47.920 回答