当我在数据库中有这样的值(“foo”)
时如何在不与html代码冲突的情况下回应它
通知
<input type="text" value="<? echo '"foo"'; ?>" />
结果将是这样的
<input type="text" value=""foo"" />
我该如何解决?
答案 0 :(得分:3)
<a href="<?php echo urlencode($dburl)?>" title="<?php echo htmlspecialchars($dbvalue)?>">link</a>
答案 1 :(得分:2)
你可以使用htmlentities来解决这个问题:
<input type="text" value="<? echo htmlentities('"foo"'); ?>" />
这将返回
<input type="text" value=""foo"" />
避免与html发生任何冲突。
答案 2 :(得分:1)
htmlspecialchars(),例如
<input type="text" value="<? echo htmlspecialchars($value, ENT_QUOTES); ?>" />
ENT_QUOTES是可选的,并且还对单引号'。
进行编码我使用了$ value,因为我不确定你在数据库中究竟有什么(有或没有引号?)但如果你想要使用它,它会存在某种变量,所以,我称之为$值。
由于上面有点笨重,我为它做了一个包装:
// htmlents($string)
function htmlents($string) {
return htmlspecialchars($string, ENT_QUOTES);
}
所以你可以
<input type="text" value="<? echo htmlents($value); ?>" />
不要与现有的htmlentities()混淆,后者编码所有非标准字符。 htmlspecialchars()只编码&amp;,&lt;,&gt;,“和',这更适合UTF8页面(你的所有网页都是UTF8,对吧?; - )。
答案 3 :(得分:0)
首先,不要使用短标签('
接下来,您的HTML格式不正确,因为您有一组额外的引号。由于您似乎正在采用将PHP嵌入到HTML中的方法,因此快速解决方法是:
<input type="text" value="<?php echo 'foo'; ?>" />
...虽然由于这个值来自你的数据库,它将存储在一个变量中,可能是一个数组,所以你的代码看起来应该更像:
<input type="text" value="<?php echo $db_row['foo']; ?>" />
为清楚起见,大多数程序员都会尝试使用像smarty这样的模板系统来消除PHP解析和非解析代码之间的切换。
<?php
....
print "<input type='text' value='$db_row[foo]' />\n";
....
?>
(注意
1)当变量在带有PHP块的双引号内时,该值将自动替换
2)当引用双引号字符串中的关联数组条目时,不引用索引。
HTH
℃。
答案 4 :(得分:-3)
<?php
echo "<input type='text' value='{$foo}' />" ;
?>