根据php解析器,我收到语法错误

时间:2012-05-22 17:07:51

标签: php

我只是缩小了某些环境中发生的奇怪错误之一。

下面的代码解析我的linux php 5.3.6默认安装,在windows php 5.4.3默认安装但在我们用Windows php 5.3.6的一些Windows机器上失败。

我们得到的信息是:

解析错误:语法错误,第7行的C:\ bogus.php中的意外'}'

第7行是“}”。

我只能认为这个错误是由php.ini设置引起的。有人知道问题是什么吗?

<?php
if(!empty($data['foo'])) {
    ?>
    <div>
        <?=$data['bar'];if(!empty($data['foo'])) {?> (Foo: <?=$data['foo'];?>) <?php }?></div>
    <?php
}
?>      

3 个答案:

答案 0 :(得分:4)

这看起来很奇怪:

<?=$data['bar'];if(!empty($data['foo'])) {?>

您正在混合<?=多个语句。如果我是你,我会尽量避免使用短标签。

但无论如何,我认为这意味着Windows机器在php.ini中没有启用short_open_tags。启用它,您的问题可能会消失。

答案 1 :(得分:2)

我会更改所有{...}以使您的生活更轻松:

<?php if(!empty($data['foo'])):?>
    <div>
        <?php echo $data['bar'];
         if(!empty($data['foo'])):?> 
              (Foo: <?php echo $data['foo']?>) 
        <?php endif?>
    </div>
<?php endif?>      

答案 2 :(得分:1)

<?php
if(!empty($data['foo'])) {
    echo '<div>'.$data['bar'];if(!empty($data['foo']))echo 'Foo:'.$data['foo']; 
echo '</div>';
}
?>

使用回声功能