【发布时间】: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 <>。
当我不在输入中使用htmlspecialchars 时,只有test '(当然,因为" 没有转义)。
当我使用htmlspecialchars 函数时,输入具有正确的值' " / /n /t <>(因为现在' 和" 已正确转义)。
但是输入的内容不应该转换成test &apos; '&quot;'之类的吗?
这种情况下用htmlspecialchars可以吗?
【问题讨论】:
-
@CasimiretHippolyte 我已经阅读了手册,这就是我问这个问题的原因。手册说:执行的翻译是:'&'(和号)变成'&' '"' (双引号) 变成 '"'当 ENT_NOQUOTES 未设置时。“'”(单引号)变为 ''' (或')仅在设置了 ENT_QUOTES 时。''(大于)变成'>'
-
@CasimiretHippolyte 问题是,在我的 value=" " 内部,它不会像手册所说的那样改变字符。我想知道为什么会这样。
-
试试 echo htmlspecialchars("ab\"cd"); 输出:
ab&quot;cd -
“问题是,在我的 value="" 里面,它并没有像手册说的那样改变字符” – 你看过生成的 HTML 输出吗(查看浏览器中的源代码)——或者只是浏览器已经将其解释为 HTML 时显示的内容......?
标签: php htmlspecialchars