如何反转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 &amp; etc.)
我认为这也可能是个问题。我应该怎么做才能解决这个问题?【参考方案3】:
我想你正在寻找html_entity_decode
。
【讨论】:
【参考方案4】:html_entity_decode()
。这个可以在the documentation for htmlentities
的开头找到
【讨论】:
有人知道为什么这是有效的html_entity_decode(" &amp;aacute;&amp;eacute;",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() 是不是足以创建 xml 安全值?