PHP模板方法<! - ?= $ var? - >?

时间:2012-03-05 23:02:36

标签: php templates syntax

伙计,我可以发誓我在某个地方看到它,缩短<?php echo $var ?>构造的有用语法,我认为它是<?=$var?>但它不起作用。我现在已经搜索了大约半个小时但是找不到再次告诉我这个网站的网站,我无法找出正确的语法。

我是幻觉还是真的有这样的语法?

<div style="background-color:<?=$backgroundColorFromPhp?>">
    Hello <?=$name?>!
</div>

5 个答案:

答案 0 :(得分:6)

PHP在php.ini中有short_open_tag指令,它启用了这种语法:

<? PHP code here; ?>

而不是<?php PHP code here; ?>

它也启用

<?= variable ?>

作为<? echo variable; ?>的简写。文档指出,从PHP 5.4.0开始<?=将被启用,无论short_open_tag设置如何。

非常相似的是asp_tags。它支持经典的ASP风格语法:

<% PHP code here; %>
<%= variable %>

这是echo-shorthand语法最初的来源。旁注:在经典的ASP <%= ...中会取代相当冗长的形式:

<% Response.Write variable %>

答案 1 :(得分:2)

启用short_open_tag后,

<?= $backgroundColorFromPhp ?>

的快捷方式
<?php echo $backgroundColorFromPhp; ?> 

但是,如果禁用了short_open_tag,

<?= $backgroundColorFromPhp ?>

也将被禁用(在PHP 5.4之前)。

答案 2 :(得分:1)

是的,这是正确的,但有一些警告。

首先,您必须拥有short tags on。根据我的经验,这是默认配置,如上面的文档所述;

其次,您需要PHP解析该文件。如果文件是.html文件,则php引擎不会自动解析它。你需要以某种方式运行它,或者告诉php默认读取.html文件。

最后,我想在那里抛出end statement分号(使其成为<?=$name;?>),但我相信这是一个偏好点。

答案 3 :(得分:1)

在php上确实存在类似的语法,只有在设置服务器使其工作时才会起作用它称为速记,但强烈建议不要使用这种技术,因为有些服务器禁用此功能,可能会提供一些不明信息错误使用时的错误。我想我第一次看到这个用在wordpress上。 ;)

答案 4 :(得分:0)

您要做的事情应该按照以下方式完成

     <div style="background-color:<?=$backgroundColorFromPHP ?>">
          Hello <?=$name ?>!
    </div>

简而言之,请在最后?标记之前留一个空格

请严格避免回复您的HTML内容。这简直是​​一种糟糕的风格。始终将PHP代码的动态与html元素分开。