PHP中在文本框显示iframe值:仅显示至首个双引号问题
看起来你踩了HTML属性引号冲突的坑啦!咱们来一步步解决:
问题根源
你存在数据库里的iframe代码肯定是带双引号的,比如<iframe src="xxx" width="yyy" ...>,而文本框的value属性也是用双引号包裹的。当PHP直接输出这段iframe代码时,浏览器会把第一个"当成value的结束标记,后面的内容就被当成了HTML的其他属性,自然不会显示在文本框里。
快速解决方法
用PHP的htmlspecialchars()函数把iframe内容转义一下,把特殊HTML字符转成实体,这样浏览器就会把它们当成普通文本处理,而不是HTML代码的一部分。修改你的代码如下:
<label>Location</label> <input type="text" style="resize:vertical" class="md-input" name="locationmap" value="<?php echo htmlspecialchars($comp_row['comp_locationmap'], ENT_QUOTES); ?>"> <i class="glyphicon glyphicon-pushpin form-control-feedback glyphiconalign"></i>
这里的ENT_QUOTES参数很重要,它会同时转义单引号和双引号,彻底避免引号冲突的问题。另外顺便提一句,你的input标签里重复写了两次class="md-input",可以合并成一个,代码更整洁~
额外小贴士
如果之后需要把文本框里的内容再存回数据库,不需要做反向转义,因为htmlspecialchars()只是处理了显示层面的字符,不会改变原始内容的结构。要是之后需要把转义后的内容还原成原始HTML,用htmlspecialchars_decode()函数就可以啦。
内容的提问来源于stack exchange,提问作者Linu
相关产品推荐
相关产品推荐

