php - 在文本输入的值属性中使用 htmlspecialchars

标签 php attributes escaping quotes htmlspecialchars

我的问题类似于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 &quot;Dead Pirate&quot; Jones

并且可以插入到 <input> 中字段没有问题。

如果输入字段的值包含文字 &quot;这是用户可见的,那么您将进行一些双重编码。

关于php - 在文本输入的值属性中使用 htmlspecialchars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11458779/

相关文章:

C# 覆盖子类中的属性

c - 终止字符引用

php - Google map v3 api 不支持越南语和泰语/字符?

php用大写字母分隔字符串

PHP.ini 默认目录扩展

attributes - Nightwatch.js 使用数据属性

jquery - 使用 jQuery 实际设置选项元素上的 selected 属性

bash - pretty-print 列中的颜色转义码

PHP Amazon webservice未捕获的curl异常

php - 如果php mysql的开始和结束之间有日期,则禁用日期