PHP将含HTML的MySQL查询结果输出到input value属性的问题咨询
问题原因
你当前的写法没有对$row['content']中的HTML特殊字符做转义,内容里的双引号、尖括号、&符号会被浏览器直接解析为HTML代码,提前闭合input的value属性甚至input标签本身,最终导致内容混入外层页面结构。
解决方法
使用PHP内置的htmlspecialchars()函数对输出内容做HTML实体转义,转义后的特殊字符会被浏览器识别为纯文本,不会触发HTML解析逻辑,自然就不会突破input输入框的限制。
修正后的代码如下:
echo '<input value="'.htmlspecialchars($row['content'], ENT_QUOTES).'"></input>';
参数说明
- 第二个参数加
ENT_QUOTES是为了同时转义内容中的单引号和双引号,彻底避免内容里的引号提前闭合value属性。 - 如果你的站点使用非UTF-8编码,可以传入第三个参数指定对应编码,比如
htmlspecialchars($row['content'], ENT_QUOTES, 'GBK')适配GBK编码场景。
补充说明
转义操作仅作用于前端输出环节,不会修改你数据库中存储的原始内容;后续用户从input提交该内容时,你接收到的依然是未转义的原始HTML内容,不需要额外做解码处理。
内容的提问来源于stack exchange,提问作者Stan Daily
相关产品推荐
相关产品推荐

