我的问题类似于this问题,但我没有使用代码点火器。我将从数据库获得的变量回显到文本输入的值属性中。变量可能包含 ' 或 "或任何其他特殊字符。
我试过:
<input type="text" name="myTextInput" value="<?= htmlspecialchars($dbValue, ENT_QUOTES); ?>" />
但它将引号输出为 "
或 '
这不是我想要的。我希望文本输入实际包含用户输入的引号。
我应该使用 php 函数还是 javascript 函数来转义字符串?如果我不转义它,我会收到一个 javascript 错误,因为 $dbValue 字符串中的引号与值属性引号相互作用。
最佳答案
但这正是您想要的。例如
如果你插入的数据是
Davy "Dead Pirate" Jones
然后你将它按字面意思插入到输入字段中,你最终会得到
<input type="text" name="..." value="Davy "Dead Pirate" Jones" />
解释如下:
<input> field with attributes:
text -> 'text'
name -> '...'
value -> ' ' (a single space)
Dead ->
Pirate ->
" ? danging quote
Jones ->
" ? -> another dangling quote
通过比较,在执行 html_entities 之后,您将拥有
Davy "Dead Pirate" Jones
并且可以插入到 <input>
中字段没有问题。
如果输入字段的值包含文字 "
这是用户可见的,那么您将进行一些双重编码。
关于php - 在文本输入的值属性中使用 htmlspecialchars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11458779/