例如,我想使用数据库中的一些数据生成html代码。 这里有两种打印数据的方式
<? echo '<li><img src="'.$row['image'].'" /></li>';?>
or
<? echo "<li><img src='$row[image]' /></li>";?>
他们两个都在工作。如果是这样,为什么人们使用第一种方法,如果不按.
分割行,它也可以正常工作。
感谢
答案 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中使用"
,请使用'
。无论哪种方式,您都不需要通过\
答案 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>';