如何在 html/php 中转义 MS-SQL 输出


How to escape MS-SQL output in html/php?

听起来很简单,但我现在有点困惑。

我有这个数据库对象,其中包含一些我想以 html 形式输出的值。

简化问题: $result是我的数据库对象,这是 html 输入,我想在其中输出一些可以包含双引号或单引号的文本。

<input class="someclass" name="desc" id="descID" type="text" value="<?=$result['desc'];?>" placeholder="<Description>" />

因此,如果$result['desc']包含这样的文本:"你听说过"foobar"吗?第一个双引号之后的所有内容都被切断,最后是这样的:"你听说过吗"。

我已经尝试过但没有成功:

  • 像这样的HTMLSpecialchars value="<?=htmlspecialchars($result['desc']);?>"或像这样的value="<?=htmlspecialchars($result['desc'], ENT_QUOTES);?>"

  • 添加斜杠

注意:我的数据库(mssql)正确保存了字符串。只有我的 html 中有问题。

如果你能在这里帮助我,我会很高兴。谢谢。

感谢您到目前为止的帮助,但我设法找到了解决方案:

<?$descEscaped = str_replace('"', '&quot;', $result['desc']);?>
<input class="someclass" name="desc" id="descID" type="text" value="<?= htmlspecialchars($descEscaped);?>" />

htmlspecialchars 将引号替换为""。
我正在使用我的简单函数 htmlliteral:

function htmlliteral($s){
     return '"'.htmlspecialchars($s).'"';
}

使用此函数,您可以使用:

$descEscaped = htmlliteral($result['desc']);
print "<input class=someclass name=desc id=descID type=text value=$descEscaped />";