如何反转htmlentities()?

Posted

技术标签:

【中文标题】如何反转htmlentities()?【英文标题】:How to reverse htmlentities()? 【发布时间】:2011-09-21 20:34:09 【问题描述】:

对于áéí等特殊字符,我可以拨打htmlentities()

$mycaption = htmlentities($mycaption, ENT_QUOTES);

获取对应的html实体:

áéí

我怎样才能把它转回 áéí

【问题讨论】:

áéí 使用哪种编码? 你是这个意思吗? <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> <meta http-equiv="Content-Language" content="en" /> php.net/manual/en/function.html-entity-decode.php 【参考方案1】:

如果使用htmlentities()进行编码,可以使用html_entity_decode()进行逆向处理:

html_entity_decode()

将所有 HTML 实体转换为其适用的字符。

html_entity_decode() 与htmlentities() 的相反之处在于它将字符串中的所有 HTML 实体转换为其适用的字符。

例如

$myCaption = 'áéí';

//encode
$myCaptionEncoded = htmlentities($myCaption, ENT_QUOTES);

//reverse (decode)
$myCaptionDecoded = html_entity_decode($myCaptionEncoded);

【讨论】:

@Qix 这个例子有什么问题? php有什么不好? @RNKushwaha 相反函数的命名约定。【参考方案2】:

您想查看 html_entity_decode 并担心应该使用哪个字符集(可能是 ISO8859-1)。

关于字符集等可能也值得阅读this article。

【讨论】:

我试过这段代码,但字符仍然编码:$strcaption = html_entity_decode($finalArray['Caption'], ENT_COMPAT, "ISO8859-1"); 它有什么问题? 以下对我有用 print html_entity_decode("á",ENT_COMPAT, "ISO8859-1");您可能需要检查 $finalArray['Caption'] 是否没有双引号(例如,与符号表示为 & 等) you may want to check that $finalArray['Caption'] doesn't have things double quoted (e.g. ampersand characters represented as & etc.) 我认为这也可能是个问题。我应该怎么做才能解决这个问题?【参考方案3】:

我想你正在寻找html_entity_decode

【讨论】:

【参考方案4】:

html_entity_decode()。这个可以在the documentation for htmlentities的开头找到

【讨论】:

有人知道为什么这是有效的html_entity_decode(" áé",ENT_COMPAT, "ISO8859-1"),但如果相同的文本来自变量,它就不再有效:html_entity_decode($mycaption,ENT_COMPAT, "ISO8859-1"); 有什么区别? “不再工作”是什么意思? $mycaption 可能不包含与第一个示例中相同的字符串。它们在您的屏幕上可能看起来相同,但编码不同。 越来越近了。问题:如果我打印解码的,它会显示正确的字符$reversecaption = html_entity_decode($finalArray['Caption'],ENT_COMPAT, "ISO8859-1"); print_r(html_entity_decode($reversecaption,ENT_COMPAT, "ISO8859-1"));,但如果我想在元标题中使用它,它是未解码的。 <title><?php echo $reversecaption; ?></title> 有人知道这是为什么吗? Uli:PHP 不知道也不关心您的 HTML。如果您在两个地方使用相同的代码,它将在两个地方输出相同的数据,而不管 HTML 标记如何。更有可能是您的网络浏览器以不同的方式显示它们。【参考方案5】:
string html_entity_decode ( string $string [, int $quote_style = ENT_COMPAT [, string $charset = 'UTF-8' ]] )

【讨论】:

以上是关于如何反转htmlentities()?的主要内容,如果未能解决你的问题,请参考以下文章

有啥 绕过 htmlentities 进行 xss 攻击的方法吗

htmlentities 将商标转换为†[重复]

htmlentities() 是不是足以创建 xml 安全值?

153-PHP htmlentities函数

php htmlentities和htmlspecialchars 的区别

jQuery ajax 和 htmlentities,在文本字段上使用 .val()