php - htmlentities() 双重编码字符串中的实体

标签 php

我只想将未编码的字符转换为 html 实体,而不影响已经存在的实体。我有一个字符串,其中包含以前编码的实体,例如:

gaIUSHIUGhj>‐ hjb×jkn.jhuh>hh> …

当我使用 htmlentities() 时,实体开头的 & 再次被编码。这意味着 和其他实体将它们的 & 编码为 &:

×

我尝试解码完整的字符串,然后再次编码,但似乎无法正常工作。这是我试过的代码:

header('Content-Type: text/html; charset=iso-8859-1');
...

$b = 'gaIUSHIUGhj>‐ hjb×jkn.jhuh>hh> …';
$b = html_entity_decode($b, ENT_QUOTES, 'UTF-8');
$b = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $b);
$b = htmlentities($b, ENT_QUOTES, 'UTF-8'); 

但它似乎并没有以正确的方式工作。有没有办法防止或阻止这种情况的发生?

最佳答案

将可选的 $double_encode 变量设置为 false。查看documentation获取更多信息。

您的结果代码应如下所示:

$b = htmlentities($b, ENT_QUOTES, 'UTF-8', false);

关于php - htmlentities() 双重编码字符串中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15306819/

相关文章:

php - 在 Twig 中使用 "İ"上的上部过滤器时如何获取 "I"而不是 "i"

PHP:数组比较问题 - URL

php - 尝试通过简单的 .php 文件获取数据时出现不熟悉的 MySQL 错误

php - 创建具有随机值 PHP 的关联数组

PhpSpreadsheet - 获取 d/m/Y 日期的原始字符串值,而不是转换为 float

PHP AWS SNS SDK - 徽章

php - Magento 1.8.1.0 订单确认电子邮件 - 仅再次向销售人员发送电子邮件

php - 如何正确存储和查找电话号码的区号

php - "error in your SQL syntax .. near ' 键 ' "

php - 设置回调 url 来接收信息