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

时间:2016-03-01 13:26:34

标签: php html sql-server htmlspecialchars

听起来很简单,但此刻我很困惑。

我有这个DB对象,其中包含一些我想以html格式输出的值。

简化问题: $result是我的db对象,这是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);?>"

  • 和addslashes

注意:我的DB(mssql)正确保存字符串。只有我的HTML中的问题。

如果你能帮助我,我会很高兴的。感谢。

2 个答案:

答案 0 :(得分:1)

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

<?$descEscaped = str_replace('"', '&quot;', $result['desc']);?>

<input class="someclass" name="desc" id="descID" type="text" value="<?= htmlspecialchars($descEscaped);?>" />

答案 1 :(得分:0)

htmlspecialchars用“&”代替引号。
我正在使用简单的函数htmlliteral:

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

使用此功能,您可以使用:

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