为什么htmlspecialchars_decode()中没有$encoding参数?

问题描述 投票:0回答:1

如果我们查看 PHP 中 htmlspecialchars()

 函数的文档,我们会看到它有一个 
$encoding
参数来指定输入字符串的编码。

现在,相反,我希望相反的

htmlspecialchars_decode()
函数也有一个
$encoding
参数。然而,事实并非如此.

我想知道为什么会这样。必须有一些原因不在

$encoding
中包含
htmlspecialchars_decode()
参数。

令人惊讶的是,

$encoding
中有一个
html_entity_decode()
参数,那么将它包含在该函数中有什么意义。

php character-encoding htmlspecialchars
1个回答
0
投票

我不得不在这里稍微猜测一下,但是......

htmlspecialchars_decode
只解码了一小部分字符,这些字符都是 ASCII 字符。因此,无需指定要将这些字符解码为的 target 编码,因为它们在所有 ASCII 兼容编码中都是相同的。现在,如果您想解码为非 ASCII 兼容编码怎么办?这可能实际上从来不是这种情况,如果你真的需要的话,你可以简单地在之前和/或之后进行一些编码转换。

PHP 总是假定 ASCII 用于对它重要的事情,而任意字节用于任何其他无关紧要的东西,所以这个函数从来没有得到任何统一的编码支持,就像许多其他函数也没有一样。

函数

htmlspecialchars
html_entity_decode
在某些时候已经接受了这种处理,因为编码 do 很重要的情况可能更经常地遇到它们。在
html_entity_decode
的情况下,它可以解码更广泛的字符,并且将这些 解码为 的编码很重要。

对于

htmlspecialchars
,只有当你将非 ASCII 兼容的字符串放入它时(与它的
_decode
对应物相同的罕见情况),并且如果你会问为什么它支持编码而
_decode
确实如此不,好吧……一致的 PHP API 设计。 🤷u200d♂️

© www.soinside.com 2019 - 2024. All rights reserved.