【问题标题】:Why doesn't htmlspecialchars convert quotes inside an input value?为什么 htmlspecialchars 不转换输入值内的引号?
【发布时间】:2015-04-27 08:38:18
【问题描述】:

我有以下代码:

<input type="text" name="nr_p_vac" value="<?php echo htmlspecialchars($row['nr_p_vac']); ?>">

其中$row['nr_p_vac'] 是测试' " / /n /t &lt;&gt;

当我不在输入中使用htmlspecialchars 时,只有test '(当然,因为" 没有转义)。

当我使用htmlspecialchars 函数时,输入具有正确的值' " / /n /t &lt;&gt;(因为现在'" 已正确转义)。

但是输入的内容不应该转换成test &amp;apos; '&amp;quot;'之类的吗?

这种情况下用htmlspecialchars可以吗?

【问题讨论】:

  • @CasimiretHippolyte 我已经阅读了手册,这就是我问这个问题的原因。手册说:执行的翻译是:'&'(和号)变成'&' '"' (双引号) 变成 '"'当 ENT_NOQUOTES 未设置时。“'”(单引号)变为 ''' (或')仅在设置了 ENT_QUOTES 时。''(大于)变成'>'
  • @CasimiretHippolyte 问题是,在我的 value=" " 内部,它不会像手册所说的那样改变字符。我想知道为什么会这样。
  • 试试 echo htmlspecialchars("ab\"cd"); 输出:ab&amp;quot;cd
  • “问题是,在我的 value="" 里面,它并没有像手册说的那样改变字符” – 你看过生成的 HTML 输出吗(查看浏览器中的源代码)——或者只是浏览器已经将其解释为 HTML 时显示的内容......?

标签: php htmlspecialchars


【解决方案1】:

你可以查看页面源码,你会看到值为

' &quot; / /n /t &lt;&gt;

在你的情况下使用它是可以的

已经在这里回答了: How to properly escape html form input default values in php?

【讨论】:

  • 哦,我明白了。顺便说一句,鉴于问题已经在其他地方得到回答,我应该删除我的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 2018-01-07
  • 2013-04-30
相关资源
最近更新 更多