You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将MySQL转义添加的斜杠恢复为原始形式以正常显示

解决MySQL存储后转义字符与HTML实体的恢复问题

嘿,这个场景我太熟悉了——用mysql_real_escape_string()存带HTML标签的内容后,取出来一堆转义斜杠和实体字符,看着就头疼。咱们分两步来搞定它:

1. 去掉多余的转义斜杠

mysql_real_escape_string()会给引号等特殊字符加\转义,从数据库取回后,这些转义符就成了多余的。直接用PHP的stripslashes()函数就能一键清除:

$cleaned_from_slashes = stripslashes($your_db_data);

小提醒:如果你的PHP版本非常老(PHP 5.4之前),magic_quotes_gpc可能是开启状态,这时候要先判断是否需要去斜杠,避免重复处理。不过现在新版本PHP已经默认关闭这个配置了,大多不用操心。

2. 解码HTML实体

你看到的<、>这些是HTML实体,是存储时被转义后的结果。要把它们转回原始的HTML标签,用htmlspecialchars_decode()就对了,记得加上ENT_QUOTES参数,这样单引号和双引号的实体都会被解码:

$final_display_content = htmlspecialchars_decode($cleaned_from_slashes, ENT_QUOTES);

完整示例代码

把两步结合起来,效果一目了然:

// 模拟从数据库取出的原始数据
$raw_db_content = 'Pop some popcorn, make some hot cocoa and let your kids enjoy these movies during their winter break! Find more lists of books <a href="\'#\'">Here</a>\nThe best part? No screen time limits needed!';

// 第一步:去除转义斜杠
$without_slashes = stripslashes($raw_db_content);

// 第二步:解码HTML实体
$display_ready = htmlspecialchars_decode($without_slashes, ENT_QUOTES);

// 输出后就能正常显示锚点标签和换行啦
echo $display_ready;

这样处理后,你的锚点标签会变回<a href="#">Here</a>的正常形式,段落换行也能正确渲染~

内容的提问来源于stack exchange,提问作者Jake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:29:38