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

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

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

<?=

比打字方便多了

<?php echo 

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


当前回答

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

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

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

其他回答

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

{$myString|escape}

在我看来,这比

<?= htmlspecialchars($myString) ?> 

注意:从PHP 5.4开始,短标记<?=,现在总是可用。

因为它会与XML声明产生混淆。不过,很多人都同意你的观点。

另一个问题是,如果用短标签编码所有东西,最后却发现最终的托管服务器已经关闭了它们,这会带来痛苦……

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

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

php_flag short_open_tag on

php中有3个标签:

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

从PHP 7.0.0删除asp和script标签