如何将含引号的SQL查询值正确输出到HTML Input标签?
解决input标签value属性包含引号的截断问题
当你输出包含双引号的内容到input的value属性时,内容里的双引号会和value属性的闭合双引号冲突,导致HTML解析提前终止,这就是内容只显示到第一个引号的原因。
解决这个问题的核心是对输出字段值做HTML转义,用PHP内置的htmlspecialchars()函数就能搞定:
<input type="text" name="ProductMeasurement" value="<?php echo htmlspecialchars($row->materialdescriptionvalue, ENT_QUOTES); ?>">
关键细节说明:
htmlspecialchars()会把特殊字符(比如双引号")转换成对应的HTML实体("),让HTML解析器不会把内容里的引号误判为属性的闭合标记。- 第二个参数
ENT_QUOTES是推荐添加的,它会同时转义单引号和双引号,确保无论内容里包含哪种引号都能正常处理;如果只需要处理双引号,用默认的ENT_COMPAT参数也可行。
转义后,你的目标值AL Checker 1/8" x 48" x 120"会被转换为:
AL Checker 1/8" x 48" x 120"
HTML解析时会自动把"还原成双引号,input的value就能完整显示全部内容,而且用户编辑提交后,PHP依然能获取到原始的带引号的值,完全满足编辑和提交的需求。
内容的提问来源于stack exchange,提问作者Evan Medeiros
相关产品推荐
相关产品推荐

