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

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

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

<?=

比打字方便多了

<?php echo 

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


当前回答

恕我直言,使用短标签的人经常忘记转义他们所呼应的内容。如果有一个默认转义的模板引擎就好了。我相信Rob A写了一个快速的hack来避免在Zend框架应用程序中的短标签。如果您喜欢短标签,因为它使PHP更容易阅读。那么Smarty是不是一个更好的选择呢?

{$myString|escape}

在我看来,这比

<?= htmlspecialchars($myString) ?> 

其他回答

恕我直言,使用短标签的人经常忘记转义他们所呼应的内容。如果有一个默认转义的模板引擎就好了。我相信Rob A写了一个快速的hack来避免在Zend框架应用程序中的短标签。如果您喜欢短标签,因为它使PHP更容易阅读。那么Smarty是不是一个更好的选择呢?

{$myString|escape}

在我看来,这比

<?= htmlspecialchars($myString) ?> 

以下是其美妙的流程图:

来源:关于软件工程堆栈交换的类似问题

值得一提的是,从PHP 7开始:

短ASP PHP标签<%…%>消失了 短PHP标签<?如果short_open_tag设置为true,则>仍然可用。这是默认值。 从PHP 5.4开始,短打印标签<?=…?>总是启用的,不管short_open_tag设置如何。

摆脱第一个语言是件好事,因为它干扰了其他语言。

除了个人喜好,现在没有理由不使用短打印标签。

当然,如果您正在编写与PHP 5遗留版本兼容的代码,则需要坚持旧的规则,但请记住,PHP 5.6之前的任何东西现在都不受支持。

参见:https://secure.php.net/manual/en/language.basic-syntax.phptags.php

还要注意,上面的引用不鼓励使用第二个版本(<??>)因为它可能已经被禁用:

注意: 由于短标签可以被禁用,所以建议只使用正常标签(<?>和<?= ?>)以最大化兼容性。

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

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

让我们面对现实吧。没有短标记的PHP非常丑陋。

如果你无法访问php.ini,你可以在.htaccess文件中启用它们:

php_flag short_open_tag on