我的html中有这段代码。该字段可能包含特殊字符。
<tr id="p2" >
<td><strong>Tussenvoegsel:</strong></td>
<td><input type="text" name="familyname" width="120"></td>
</tr>
在后端,我正确获取了字段的值,并且特殊字符(也包括双引号)也正确插入到表的相应列中。
$familyname=JRequest::getVar('familyname');
$familyname=str_replace("''","'","$familyname");
$familyname=str_replace("'","''","$familyname");
我的问题是当我转到表单的编辑页面时,所有特殊字符都在字段中正确显示,但双引号根本没有显示(注意:在数据库中,该列也作为双引号)。我错过了什么?
问题是像这样:
<input type="text" value="my value "with" quotes">
生成属性值的双引号内值的双引号的无效 HTML 原因。(如您在上面的突出显示中看到的。
因此,您必须转义input
标签的双引号。使用htmlspecialchars()
.
textareas
中的双引号没有问题,因为内容位于开始标记和结束标记之间,而不是在属性中。
<textarea>Here are "double quotes" okay and have not to be escaped</textarea>