打印数据的最佳方式

时间:2010-05-16 11:36:19

标签: php

例如,我想使用数据库中的一些数据生成html代码。 这里有两种打印数据的方式


<? echo '<li><img src="'.$row['image'].'" /></li>';?>
or
<? echo "<li><img src='$row[image]' /></li>";?>

他们两个都在工作。如果是这样,为什么人们使用第一种方法,如果不按.分割行,它也可以正常工作。


感谢

8 个答案:

答案 0 :(得分:2)

最好的方法是只使用一种方法。

答案 1 :(得分:1)

echo sprintf('<li><img src="%s" /></li>', $row['image']);

如果稍后更改/扩展,则更容易阅读并且更不容易出错。

答案 2 :(得分:1)

另一种方法:

<li><img src="<?php echo($row['image']); ?>" /></li>

答案 3 :(得分:1)

<? echo '<li><img src="'.$row['image'].'" /></li>';?>

合理的策略是以纯PHP模板输出所有静态内容。这样您就不必担心静态内容中的PHP字符串文字转义:

<li><img src="<? echo $row['image']; ?>"/></li>

但是,(a)您需要在输出到HTML的所有原始文本字符串上使用htmlspecialchars(),否则您可能会遇到跨站点脚本问题。此外,通常应避免使用<?短标签,因为它们可能未在所有服务器上启用。

要减少模板中输入“htmlspecialchars”的数量,请定义快捷功能:

<?php
    function h($s) {
        echo htmlspecialchars($s, ENT_QUOTES);
    }
?>

<li><img src="<?php h($row['image']); ?>"/></li>

答案 4 :(得分:0)

在第二种方法中:

<? echo "<li><img src='$row[image]' /></li>";?>

你不能使用函数,你只能使用变量。如果要打印变量,使用哪种方法无关紧要。

答案 5 :(得分:0)

如果您在html标记中使用'来指定属性值,请在PHP中使用",如果您在html中使用",请使用'。无论哪种方式,您都不需要通过\

来转义html中的引号

答案 6 :(得分:0)

我甚至使用<?php echo '<li><img src="' . $row['image'] . '" /></li>'; ?>

存在速度差异,但这几乎是不可测量的,通常根本不可察觉。首先解析双引号中的每个字符串。这就是为什么最好不要对字符串使用双引号。如果你使用许多带有变量的字符串,它可能会成为一个可测量的差异 - 但这样做首先会是非常糟糕的设计。

Btw。:经常使用<?php?>打开和关闭解析器也是如此。

执行上述操作的主要原因是良好的编码习惯。

其他人可能也需要了解您的脚本。也许你自己也会在几年后。 字符串中的变量可以比像这样包含的变量更容易被忽视。 在语法高亮的IDE上更是如此。

我甚至看到人们在以这种方式插入每个var之前放一个换行符。但恕我直言,这有点太多了。 ;)


或多或少的offtopic:不,我没有读过其他答案中正在进行的所有战斗,但是我知道旧的“不是它不慢”与“是的它是”幼儿园的心脏。 ;)

为了基督的缘故,你是编码员,该死的。试试吧:

<?php
$startt = microtime(true);

for ($i = 0; $i <= 10000000; $i++) {
    $test = 'This is test number ' . $i;
//  $test = "This is test number " . $i;
//  $test = "This is test number $i";
}

$endt = microtime(true);
echo 'Used time: ' . ($endt - $startt);
?>

对我来说,第一个给了5.1321198940277,第二个给了5.2075009346008,第三个给了6.4821639060974(超过1.2秒的差异)。证明完毕到目前为止。

有趣的是在不同的系统上尝试。也许我会为此提出自己的问题。

答案 7 :(得分:0)

最快的方法是使用多个参数调用echo函数,而不是包含连接参数的字符串:

echo '<li><img src="',$row['image'],'" /></li>';

相当于

echo '<li><img src="';
echo $row['image'];
echo '" /></li>'

echo '<li><img src=";'.$row['image'].'" /></li>';