html 中的 php 变量,别无他法: <?php echo $var; ?>

Posted

技术标签:

【中文标题】html 中的 php 变量,别无他法: <?php echo $var; ?>【英文标题】:php variable in html no other way than: <?php echo $var; ?> 【发布时间】:2011-01-10 03:37:02 【问题描述】:

我在混合 htmlphp 方面做了很多工作,大多数时候我只想要包含一些 PHP 变量的纯 HTML,所以我的代码如下所示:

<tr><td> <input type="hidden" name="type" value="<?php echo $var; ?>" ></td></tr>

这很丑陋。有没有更短的,更像下面的?

<tr><td> <input type="hidden" name="type" value="$$var" ></td></tr>

这是可能的,但你会被 "" 卡住(你必须用 '' 替换它们)并且布局消失了

echo "<tr><td> <input type="hidden" name="type" value="$var" ></td></tr>"

还有什么更好的吗?

【问题讨论】:

请记住,PHP 使用单引号比使用双引号更快,如果必须,请使用 echo ' '; @LucianMinea 他们的速度是一样的。单引号和双引号只是引号,都不是“更快”。这通常是重复的错误信息,而且是完全错误的。 单条速度更快,在大代码块上很容易看到。原因是 PHP 在运行时会自动“清理”双引号,但不会在单引号上。使用双引号也会使问题中的代码卡住,因为引号只是在错误的位置关闭。此外,我只是想给这个人一个解决方案,稍微解释一下。我从 91 年开始这样做,所以我知道我的理由。 【参考方案1】:

您的代码有短标记版本,现在完全可以使用,尽管其他方面的建议过时:

<input type="hidden" name="type" value="<?= $var ?>" >

其中(PHP 5.4 之前)需要在您的 php 配置中启用短标签。它的功能与您输入的代码完全相同;这些行的内部实现实际上是相同的:

<?= $var1, $var2 ?>
<?php echo $var1, $var2 ?>

内置解决方案就是这样。有很多 3rd 方模板库可以更轻松地将数据嵌入到您的输出中,smarty 是一个很好的起点。

【讨论】:

@code_burgar 短标签不会从 PHP6 中移除,目前也不会被弃用。 嗯,我可能是错的,但我很确定他们会被删除。即使他们留下来,使用它们充其量也是一种值得怀疑的做法。 = 哎呀。更不用说它们在某些服务器上默认禁用。 @code_burgar 不要在 PHP 脚本中编写 XML,XML 对数据进行编码并写入结果输出。我从来没有遇到过禁用 short_open_tags 的服务器。 没有。 默认情况下,无论 ini 设置如何,在 PHP >= 5.4 中都会启用短回显。无需再设置short_open_tag,您可以随意使用&lt;?=?&gt; 在您的视图中获取干净的代码。即使在 2010 年,曾经被弃用的短标签也是完整的,完全是垃圾。 为了呼应@Jimbo 的观点,&lt;?&lt;?= 经常被混淆。不鼓励前者,后者很好,从 PHP 5.4 开始,后者始终可用(请参阅 php.net/manual/en/ini.core.php#ini.short-open-tag )您只需要小心确保 short_open_tag 已打开(它是 PHP_INI_ALL,这意味着它可以如果使用 php 5.3 及更早版本,请在脚本中打开。【参考方案2】:

使用HEREDOC 语法。您可以将单引号和双引号、变量甚至函数调用与未更改/未转义的 html 标记混合使用。

echo <<<MYTAG
  <tr><td> <input type="hidden" name="type" value="$var1" ></td></tr>
  <tr><td> <input type="hidden" name="type" value="$var2" ></td></tr>
  <tr><td> <input type="hidden" name="type" value="$var3" ></td></tr>
  <tr><td> <input type="hidden" name="type" value="$var4" ></td></tr>
MYTAG;

【讨论】:

我对 HEREDOC 语法的唯一问题是它无法突出显示页面 HTML 部分的语法。 @meagar 在某些编辑器中会这样做,除非您有一个规则集来覆盖它。 只是祈祷你永远不需要索引克林贡船 :) 关于编辑器,使用 VIM 新的 HEREDOC 链接:php.net/manual/en/…【参考方案3】:

有很多模板系统可以为您的视图提供更紧凑的语法。 Smarty 是受人尊敬和受欢迎的。 This article 列出了另外 10 个。

【讨论】:

【参考方案4】:

我建议不要使用短标签,有关原因的更多信息,请参阅 Are PHP short tags acceptable to use?。

我个人不介意像这样混合 HTML 和 PHP

<a href="<?php echo $link;?>">link description</a>

只要我有一个具有良好语法突出显示的代码编辑器,我认为这是非常易读的。 如果您开始使用 PHP 回显 HTML,那么您将失去语法高亮 HTML 的所有优势。 回显 HTML 的另一个缺点是带有引号的内容,恕我直言,以下内容的可读性要差很多。

echo '<a href="'.$link.'">link description</a>';

在 PHP 中简单的回显和简单循环以及在 HTML 中完成其余部分对我来说最大的优势是缩进是一致的,这最终提高了可读性/可扫描性。

【讨论】:

没有人应该永远将该问题用作参考,这是一堆错误信息和主观意见。 @meagar:没错!更不用说,那里的注释突出显示 this link 指定短回显标记从 php5.4 开始的短开放语法中分离。这就是它(上述链接末尾的手册)所说的。 "echo 也有一个快捷语法,你可以在开始标签后面紧跟一个等号。在 PHP 5.4.0 之前,这个简短语法只适用于 short_open_tag 配置设置启用。"跨度> 【参考方案5】:

我真的认为您应该采用 Smarty 模板引擎作为您项目的标准 php 库。

http://www.smarty.net/

Name: $name|capitalize<br>

【讨论】:

你赞成的论点是什么? 赞成的论点: - 将 php 代码与 html 分离(更好的维护) - smarty 模板将按原样显示在浏览器中。 (没有编程经验的前端设计师可以更好地理解它) - 缓存。 (您可以根据输入保存页面的多个缓存副本,这比再次生成整个页面要快得多)缺点 - smarty 有点太强大了,程序员可以将太多逻辑放入模板中......但是至少是显示逻辑 正是他所说的。你不会写一个数据库连接类来连接你的数据库吧?为什么要写模板引擎来做模板​​? 当结构、风格和编程由更多(不同的)人完成时,模板系统是好的,对于小项目——当只有一两个程序员时——它甚至会花费你的时间。 @jave.web 与数据库连接器类相同。这都是关于权衡的。对于这个问题,使用 smarty 比 php 短标签要早几年,而且缺点很少。【参考方案6】:

在 HTML 部分之前的 php 部分中,使用 sprinf() 从变量中创建一个常量字符串:

$mystuff = sprinf("My name is %s and my mother's name is %s","Suzy","Caroline");

然后在HTML部分你可以为所欲为,比如:

<p>$mystuff</p> 

【讨论】:

以上是关于html 中的 php 变量,别无他法: <?php echo $var; ?>的主要内容,如果未能解决你的问题,请参考以下文章

2016第49周五

MinIO 更改用户凭据(密钥)

更改 URL url 友好 [重复]

从转换中获取结果顶点?

服务器断电导致虚拟机数据丢失怎么恢复?

Windows 徽标干净卸载