具有多个变量的回声字符串

时间:2011-06-30 01:16:35

标签: php html

以下所有命令都有效,但在安全性,兼容性,速度和其他约定方面哪一个被认为是正确的?

//one
echo "$row->first_name $row->last_name <br />";

//two
echo $row->first_name . ' ' . $row->last_name .'<br />';

//three
echo $row->first_name;
echo $row->last_name;
echo '<br />';

7 个答案:

答案 0 :(得分:4)

您发布的选项在安全性方面绝对没有区别。我会采取以下方式:

<p class="name"><?php echo htmlspecialchars("$row->first_name $row->last_name"); ?></p>
  • 没有<br />,他们通常不是一个好选择
  • 使用类
  • 在CSS中进行样式设置
  • 转义输出(安全!!)
  • 将HTML与PHP值分开
  • 最小语法
  • 速度差别无关紧要

答案 1 :(得分:4)

虽然不是您指定的其中一种样式,但我建议使用大括号来回显字符串,主要是兼容性说明。

echo "Welcome back, {$row->first_name} {$row->last_name}";

有关此类语法的详细信息,请参阅PHP Strings

答案 2 :(得分:1)

只要您正确地转义/编码了所有内容,所有这些都很好。我会选择第一个,因为它是最短且最容易阅读的。

编辑:我刚做了一个小基准测试,第二种方法是最慢的。第一种方法是第二种方法。第三种方法是你发布的方法中最快的方法,但是Sinan建议的方法是高效的。

答案 3 :(得分:1)

所有这些都很好。

就速度而言,第一个选项可能是最快但也最烦人的阅读.. 第三个是愚蠢的。

我会选择第二个,因为我已经看到它在商业php软件中的使用方式

答案 4 :(得分:1)

第一个是最好的选择,尽管PHP必须解析变量(与多个连接相比),但它是可读的并且最有可能是最快的。 SO问题here演示了连接如何减慢你的速度。第三种选择只是简单的不可读,并且由于最后的连接而相对较慢。他们都没有任何安全问题,甚至性能提升也几乎可以忽略不计 - 对于这种事情,你的目标应该是可读性。

答案 5 :(得分:1)

我想说更明确是最好的方法。我还希望PHP解析1需要更长的时间,因为它必须确定令牌是字符串中的变量还是字符串的一部分。我倾向于2,但有时你可能不得不将你的字符串分成新的行,因为保持在72列之下的东西符合代码样式指南。我建议查找不同的代码样式指南,如Zend(http://framework.zend.com/manual/en/coding-standard.coding-style.html)。

答案 6 :(得分:1)

正如其他人所说,安全性与速度/偏好没有区别。

但有一点需要补充,不要动态逃避输出。最好在它存储到数据库之前对其进行过滤(单个请求),然后继续为将来的每个请求执行此操作。