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

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

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

<?=

比打字方便多了

<?php echo 

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


当前回答

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

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

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

其他回答

不,它们正在被PHP 6淘汰,所以如果你喜欢代码寿命,就不要使用它们或<%…% >标记。

截至2019年,我不同意这里的某些答案。推荐使用:

1. 长标签

<?php /* code goes here */ ?>

2. 短回声标签

<?= /* code goes here */ ?>

原因:它们是PSR-1基本编码标准推荐的

其他短标签,如<?/* code goes here */ ?>不推荐

说明书说:

PHP代码必须使用长标记或短回显 标签;它绝对不能使用其他的标签变体。

从PHP 5.4开始,echo快捷方式与短标记是分开的问题,因为echo快捷方式将始终启用。现在这是事实:

SVN由Rasmus Lerdorf修订 邮件列表讨论

因此echo快捷方式本身(<?=)现在可以安全使用了。

php中有3个标签:

<?PHP ?>不需要任何配置指令 Short_open_tag <??如果short_open_tag选项在 Php.ini已打开 缩短标签<?=自PHP 5.4.0以来,它总是可用的

从PHP 7.0.0删除asp和script标签

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

更新

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

<?php and <?php echo

over

<? and <?=

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