在PHP中转义单引号

问题描述

| 我有一个管理页面,负责添加产品。我用database0来保护数据库免受不必要的字符的影响。但是,当我从数据库获取这些数据时(例如,带单引号的产品名称,例如Dave \'s Box),将其显示页面上的“ 1”属性中时出现错误。 我使用此代码显示产品代码
echo \"<li onClick=\'fill(\\\"$productName\\\")\'><strong>\".stripslashes($row[\'name\']).\"</strong> by \".stripslashes($row[\'brand\']).\"</li>\";
    

解决方法

您应该保护代码不受引号,dbl-引号和HTML标记的影响。为此,请使用PHP的
htmlspecialchars()
ENT_QUOTES
设置。例:
 htmlspecialchars($row[\'name\'],ENT_QUOTES);
    ,在javascript函数调用中,产品名称使用ѭ6name,在普通HTML输出中使用
htmlspecialchars
。     ,包含其他答案: 使用
json_encode
$productName
值正确编码为JavaScript字符串,然后 使用带有引号样式ENT_QUOTES的“ 7”对它进行正确编码,以在单个引号HTML属性值中使用。 所以:
echo \"<li onClick=\'\" . htmlspecialchars(\'fill(\'.json_encode($productName).\')\',ENT_QUOTES) . \"\'><strong>\" . htmlspecialchars(stripslashes($row[\'name\'])) . \"</strong> by \" . htmlspecialchars(stripslashes($row[\'brand\'])) . \"</li>\";
    ,根据所允许的有效产品名称的类型,您需要使用addslashes()和可能的htmlentities()。 http://php.net/manual/zh/function.addslashes.php http://php.net/manual/zh/function.htmlentities.php