这是一些用于呈现HTML锚元素的PHP代码。为什么这样:
$archives .= " <a href='" . get_year_link($archPost->year) . "'
title='Click to go to full listing for " . $archPost->year . "' target='_blank'>[List^]</a>";
完全像这样工作:
$archives .= " <a href='" . get_year_link($archPost->year) . "'
title='Click to go to full listing for $archPost->year' target='_blank'>[List^]</a>";
来自C / C#等,我偏爱第一个变种,因为我认为不能只在字符串中间转储变量smack-dab。显然PHP对此没有任何问题。为什么不呢?
答案 0 :(得分:3)
这称为字符串插值,它是available in C# as well。
就个人而言,我发现使用字符串插值是不好的做法。它使代码难以在IDE中读取,并且可能导致对字符串的误解。 (也许你想要美元符号表示一个美元符号,但因为你使用双引号"
而不是单引号'
,你现在有一个错误。)我连接起来了:
$var = 'something' . $somethingElse;
如果您正在使用echo
,那么回显列表会更高效,而不是连接:
echo 'something', $somethingElse;
另一个问题,至少在您的示例中使用的是,您将数据直接转储到HTML的上下文中而不进行转义。如果您的输出包含保留实体,那么您将生成无效的模糊HTML。这甚至可能导致安全问题,具体取决于所使用的上下文,例如XSS问题。您希望在HTML中使用的任意数据周围使用htmlspecialchars()
。 (或者,使用为您执行此操作的模板引擎。)