以下是官方文件提供的信息:

有四对不同的 可以是开始和结束标记 用于PHP。其中两个<?php ? > And <script language="php"> </script>, 总是可用的。另外两个 是短标签和ASP风格标签,和 可以打开和关闭从 Php.ini配置文件。因此, 而有些人发现短标签和 ASP样式标签方便,它们都是 便携性较差,而且通常不是 推荐。

根据我的经验,大多数服务器都启用了短标记。打字

<?=

比打字方便多了

<?php echo 

程序员的便利性是一个重要因素,那么为什么不推荐他们呢?


当前回答

为了避免可移植性问题,在PHP标记开始时使用<?如果你的php文件是纯php,没有HTML,你不需要使用结束标签。

其他回答

我太喜欢<?=$whatever?>让它去。从来没有问题。我会一直等到它咬到我的屁股。说真的,85%的(我的)客户在极少数情况下可以访问php.ini。另外15%使用主流主机提供商,而且几乎所有的提供商都启用了主流主机提供商。我爱他们。

如果你关心XSS,那么你应该使用<?= htmlspecialchars(…)?>大多数情况下,所以短标记不会有很大区别。

即使你将echo htmlspecialchars()缩短为h(),它仍然是一个问题,你必须记住几乎每次都要添加它(并试图跟踪哪些数据是预先转义的,这是不可转义的,但无害只会使错误更容易发生)。

我使用默认情况下安全的模板引擎,并写入<?PHP标签。

如果有人还在关注这个…PHP 5.4.0 Alpha 1 <?=总是可用的:

http://php.net/releases/NEWS_5_4_0_alpha1.txt 所以看起来短标签(a)是可以接受的,(b)是可以保留的。至少现在……

由于Zend Framework在默认的MVC配置中引入了“PHP作为模板语言”,短标签又回来了。我不明白争论的是什么,你一生中生产的大部分软件都将在你或你的公司控制的服务器上运行。只要你能始终如一,就不会有任何问题。

更新

在Magento做了大量的工作之后,它使用了长格式。因此,我改用了长形式的:

<?php and <?php echo

over

<? and <?=

为了确保互操作性,似乎只需要做少量的工作。

为了避免可移植性问题,在PHP标记开始时使用<?如果你的php文件是纯php,没有HTML,你不需要使用结束标签。