将结果从数据库回显到PHP中的html代码的最佳方法是什么?

时间:2010-02-08 12:55:44

标签: php mysql html xhtml

当我在数据库中有这样的值(“foo”)

如何在不与html代码冲突的情况下回应它

通知

<input type="text" value="<? echo '"foo"'; ?>" />

结果将是这样的

<input type="text" value=""foo"" />

我该如何解决?

5 个答案:

答案 0 :(得分:3)

使用urlencodehtmlspecialchars

<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="&quot;foo&quot;" />

避免与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}' />" ;

?>