2012-03-05 141 views
2

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

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

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

http://www.php.net/manual/en/ini.core.php#ini.short-open-tag和http: //www.php.net/manual/en/ini.core.php#ini.asp-tags – Tomalak 2012-03-05 23:04:46

+0

Tomalak的评论是正确的答案! – 2012-03-05 23:08:33

+0

@Tomalak我很担心我的谷歌搜索技巧..:/您介意给出答案吗? Thx – 2012-03-05 23:09:20

回答

6

PHP有php.ini中的short_open_tag指令使此语法:

<? PHP code here; ?> 

而非<?php PHP code here; ?>

这也使

<?= variable ?> 

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

非常相似的是asp_tags。它使传统的ASP风格的语法:

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

这哪里是回声语法速记最初来自。附注:在传统的ASP <%= ...将取代相当冗长形式:

<% Response.Write variable %> 
+0

有PHP复制ASP echo-shorthand语法吗? – dynamic 2012-03-05 23:52:26

+0

@ yes123我一直认为它就是这样。我承认我不确定。 – Tomalak 2012-03-06 00:08:33

2

当short_open_tag的值为已启用,

<?= $backgroundColorFromPhp ?> 

<?php echo $backgroundColorFromPhp; ?> 

快捷然而,如果short_open_tag的值为被禁用,

<?= $backgroundColorFromPhp ?> 

也将被禁止(现有到PHP 5.4)。

0

你正在尝试做应该做如下

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

总之,离开后的一个空间的最后?马克

前,请严格避免呼应你的HTML内容。这只是一种糟糕的风格。始终保持php代码与html元素分离的动态性。

+1

这在我遇到的任何实现中都不是必需的。 – rockerest 2012-03-05 23:10:46

+2

这里唯一的区别是,结束标签'?>'与变量名之间的空格是分隔的吗?这并不能解决问题,'short_open_tags'是解决方案。 :)而那额外的空白并没有使任何差异其实.. – 2012-03-05 23:10:59

1

是的,这是正确的,给出了一些注意事项。

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

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

最后,我喜欢将end statement分号放在那里(使其成为<?=$name;?>),但我相信这是一个优先选择。

+0

最解释的答案,谢谢。 :)不明白为什么它没有启用,修改php.ini不起作用,但设置WAMP值。 *编辑*:Tomalek首先对他的评论,对不起。 ;) – 2012-03-05 23:13:23

+0

@NiklasR完美公平,很乐意为您服务! – rockerest 2012-03-06 01:34:36

1

在php中确实有类似这样的语法,它只有在设置服务器使其工作时才起作用,这称为简写,但强烈建议不要使用此技术,因为有些服务器在禁用它并可能提供某些不明身份的错误使用错误。我想我第一次看到这是在wordpress上使用。 )

+0

无论ini设置如何,<?='都可以在PHP 5.4上运行 – Gordon 2012-03-06 09:09:12

+0

感谢提供的信息@Gordon没有想到他们已经将它包含在最新版本中,最终我真的认为大多数人应该真的更新他们的服务器到这个新的版。 ;) – 2012-03-06 23:29:48