所以我正在制作一个简单的脚本,我通过 POST 向 PHP 发送一个 HTML 字符串,当我尝试回显它时,它会被一些奇怪的字符编码
我发送的字符串:
'Yo <i>whats up</i>'
当我用 PHP 回显它时我得到了什么
Yo+%3Ci%3Ewhats+up%3C%2Fi%3E
这里发生了什么?是否有一些 PHP 方法可以用来将其恢复为原始 HTML 字符串?
你想用
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>
再次。
看起来您的帖子字符串正在为 url 编码。
您可以使用 urldecode 删除这些字符
echo urldecode($_POST['string']);