0

所以我正在制作一个简单的脚本,我通过 POST 向 PHP 发送一个 HTML 字符串,当我尝试回显它时,它会被一些奇怪的字符编码

我发送的字符串:

'Yo <i>whats up</i>'

当我用 PHP 回显它时我得到了什么

Yo+%3Ci%3Ewhats+up%3C%2Fi%3E 

这里发生了什么?是否有一些 PHP 方法可以用来将其恢复为原始 HTML 字符串?

4

2 回答 2

2

你想用

echo htmlspecialchars(urldecode('Yo+%3Ci%3Ewhats+up%3C%2Fi%3E'));

原因是您的数据被x-www-form-urlencoded用于发布。所以在服务器端,你必须再次解码——这就是urldecode()所做的。

htmlspecialchars()阻止您的 HTML-Tags 被呈现,因此它们仅显示为字符串(如果这是您想要的)。

因此,在 HTML 上下文中,echo urldecode('Yo+%3Ci%3Ewhats+up%3C%2Fi%3E');将输出

怎么了

如果你还用 htmlspecialchars() 包装它,你的输出将是

Yo <i>whats up</i>

再次。

于 2013-03-06T19:20:07.030 回答
2

看起来您的帖子字符串正在为 url 编码。

您可以使用 urldecode 删除这些字符

echo urldecode($_POST['string']);
于 2013-03-06T19:20:31.880 回答