Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多变量回显字符串_Php_Html - Fatal编程技术网

Php 多变量回显字符串

Php 多变量回显字符串,php,html,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; ech

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

//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 />';
//一个
回显“$row->first_name$row->last_name
”; //两个 echo$row->first_name.'''$行->姓氏。“
”; //三 echo$row->first\u name; echo$行->姓氏; 回声“
”;
只要所有转义/编码都正确,它们都可以。我会选择第一本,因为它是最短、最容易阅读的


编辑:我刚刚做了一个小的基准测试,第二种方法是最慢的。第一种方法是第二种最慢的方法。第三种方法是你发布的方法中速度最快的,但西南建议的方法也同样有效。

你发布的方法在安全性方面绝对没有区别。我会选择以下几点:

<p class="name"><?php echo htmlspecialchars("$row->first_name $row->last_name"); ?></p>

  • 不,它们通常不是一个好的选择
  • 使用类在CSS中进行样式设置
  • 转义输出(安全!!)
  • 将HTML与PHP值分开
  • 最小语法
  • 速度差无关紧要

虽然不是您指定的样式之一,但我建议使用大括号来回送字符串,主要是出于兼容性考虑

echo "Welcome back, {$row->first_name} {$row->last_name}";
有关这类语法的更多信息,请参见。

所有这些都很好

就速度而言,第一个选项可能是最快的,但也是最烦人的。。 第三个就是哑巴


我会选择第二个,因为这就是我在商业php软件中使用它的方式。第一个是最好的选择,它是可读的,而且很可能是最快的,尽管php必须解析变量(与多重串联相比)。因此,这个问题说明了连接是如何减慢速度的。第三个选项是完全不可读的,由于最后的连接,速度相对较慢。它们都没有任何类型的安全问题,甚至性能的提高都可以忽略不计——对于这种情况,您的目标应该是可读性。

我想说,更加明确是最好的方法。我还认为PHP解析1需要更长的时间,因为它必须确定标记是字符串中的变量还是字符串的一部分。我倾向于2,但有时您可能不得不将字符串拆分为新行,因为为了符合代码样式设计准则,需要将字符串保持在72列以下。我的建议是查找不同的代码风格指南,比如Zend的指南(http://framework.zend.com/manual/en/coding-standard.coding-style.html).

正如其他人所说,安全性没有区别,只是速度/偏好不同


但有一点需要补充,那就是不要在运行中逃避输出。最好在它存储到数据库(单个请求)之前对其进行过滤,然后在将来对每个请求继续进行过滤。

第一个选项可能是最慢的,因为PHP必须解析字符串以进行变量替换。@deceze,这种慢度会被人类检测到吗?或者在一个循环中多次回显字符串是否值得注意?@Cyber如果有疑问,请从两个方面对其进行分析,但很难想象你会真正注意到它。第四:回显$row->first_name,$row->last_name,“
”;你答案中的第三个选项并不完全相同;您缺少一个
回音“”
。使用“{$row->first_name}”而不是“$row->first_name”@Chris大括号真的必要吗?@Chris nvm,它们似乎是编码标准,适合复杂变量字符串。串联比解析更快:。您链接到的问题比较的是非连接与连接,而不是连接与解析。@deceze变量只需分析一次,就会形成多个连接-在他的示例中可能不会出现这种情况,但在更复杂的字符串中,解析会更快。好的,当然,对于许多字符串的大规模连接,解析可能会更快。最后,对于这种规模的小字符串来说,这其实并不重要。对于“从PHP值中分离HTML”,您可能需要遵从D Franks的答案。IE
{$row->things}s
与“undefined property”
$row->things
@bob在这种情况下没有歧义,因此没有区别。如果你想让你的字符串“多元化”,当然,这是一个值得关注的问题。还有,HTML在哪里?我认为这个例子可能是不明确的(一个嵌入字符串中的对象属性的随机示例),所以一个广义的答案(你的组合加上D Franks的提及)可能是最好的。不过这只是我的观点。回复:“哪里涉及HTML”,是指最终/实际文本输出的“s”。不过我可能误解了。我对不同的方法进行了基准测试,并公布了结果,但我不确定它们有多准确。如果其他人想对其进行基准测试,请这样做。