首先,<?=
is not一个短的开放标签,但是速记回声,这与<?php echo
。并且它无法被禁用。因此,它的使用是安全的,因为它始终处于启用状态。
说到安全的话security,输出必须是始终编码根据输出介质规则。
例如,当在 HTML 中回显数据时,它必须是 HTML 编码的:
<?= htmlspecialchars($function_here, ENT_QUOTES) ?>
或者,当在 JavaScript 内回显数据时,它必须是 JavaScript 编码的:
<script>var=<?= json_encode($function_here) ?>
或者,当它同时是 HTML 和 JS 时,那么both必须使用编码:
<?php foreach($links as $label => $url): ?>
<br>
<form method="post">
<button class="my" onclick="<?=htmlspecialchars("window.open(".json_encode($url).")", ENT_QUOTES) ?>">
<?=htmlspecialchars($label, ENT_QUOTES) ?>
</button>
</form>
<?php endforeach ?>
说到短开放标签,只有一个,<?
,并且它并不总是启用(请参阅short_open_tag http://php.net/ini.core#ini.short-open-tag指示)。
实际上,在 PHP 5.3.0 提供的 php.ini-product 文件中,它们默认是禁用的:
$ grep 'short_open' php.ini-production
; short_open_tag
short_open_tag = Off
因此,在您想要分发的应用程序中使用它们可能不是一个好主意:如果未启用它们,您的应用程序将无法工作。
<?php
另一方面,不能被禁用——所以,使用这个是最安全的,即使它写起来更长。