听起来很简单,但我现在有点困惑。
我有这个数据库对象,其中包含一些我想以 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('"', '"', $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 />";