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

addslashes转义失效问题:转义符未被代码识别

问题:转义后的字符串在JS onclick事件中未被正确识别

当前代码用addslashes()处理字符串后输出到HTML的<option>标签onclick事件里,虽然源代码能看到转义斜杠,但JS无法识别这些转义,导致功能异常。

当前代码

$description = addslashes($description);
echo "<option onclick='updateTotals(`$urlOptions`,`$option_title`,`$description`)' value='".$description."' selected> ".$description."</option>";

待转义的示例文本

422458 - 120' Boom if NOZZLE BODIES is CR II single nozzle body

问题根源

  1. addslashes()是为PHP语境设计的转义方法,它把单引号转成\',但这种转义规则和JS、HTML的解析要求不匹配,自然不被识别。
  2. 代码里onclick用单引号包裹,函数参数又用反引号,引号嵌套逻辑混乱,进一步加剧了解析错误。

解决方法

换用适配JS和HTML的转义方式,同时规范引号使用:

// 用json_encode处理要传入JS的变量,自动适配JS的转义规则
$js_desc = json_encode($description);
$js_urlOpts = json_encode($urlOptions);
$js_optTitle = json_encode($option_title);

// HTML属性用双引号,JS函数直接用转义后的变量,避免引号冲突
echo "<option onclick='updateTotals($js_urlOpts, $js_optTitle, $js_desc)' value='".htmlspecialchars($description, ENT_QUOTES)."' selected> ".htmlspecialchars($description)."</option>";

补充说明

  • json_encode()会自动处理所有JS需要的转义(单引号、换行、特殊字符等),输出的字符串自带双引号,放在单引号包裹的onclick里不会产生冲突。
  • HTML的value属性和显示文本用htmlspecialchars()转义,既能避免HTML解析错误,还能防范XSS风险,ENT_QUOTES参数会同时转义单双引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:45:22