使用PHP长标签时意外结束文件

时间:2014-10-03 21:38:33

标签: php

我得到一个奇怪的"意外的文件结尾"从同事那里获得一些更改后,PHP文件出错。通过有选择地删除代码块,我能够将问题简化为两个,如果文件中的块是这样的(为了清晰起见,删除了一些过量):

<?php if(...) { ?>
    <li><a href="<?php print $prefix; ?>specials"><i class="fa fa-tag fa-lg2"></i> <?php print _("Specials"); ?></a></li>
<? } ?>

现在,如果我将长格式PHP开放标记更改为短标签,语法错误就会消失:

<?if(...) { ?>
    <li><a href="<?php print $prefix; ?>specials"><i class="fa fa-tag fa-lg2"></i> <?php print _("Specials"); ?></a></li>
<? } ?>

如果短标签被禁用,我会理解导致问题的短标签,但我不明白长标签是如何造成这种情况的。修复它很容易,我只是想知道为什么会发生这种情况。

2 个答案:

答案 0 :(得分:0)

好的,问题是短标签被禁用了。禁用标记后,PHP只是忽略if语句并始终输出if块中的内容,这会引起我的注意。另外,我不知道对于新版本的PHP,即使禁用了短标签,您仍然可以使用&lt; ?=带有等号的开放标签,这给了我印象短标签已启用。

答案 1 :(得分:0)

你应该以相同的风格打开和关闭(长或短,无论你选择什么)。

长标签:

<?php if(..) { ?>
..
<?php } ?>

短标签:

<? if(..) { ?>
..
<? } ?>