听起来很简单,但此刻我很困惑。
我有这个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中的问题。
如果你能帮助我,我会很高兴的。感谢。
答案 0 :(得分:1)
感谢您的帮助,但我设法找到了解决方案:
<?$descEscaped = str_replace('"', '"', $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 />";