2012-05-22 80 views
0

我剛剛縮小了在某些環境中發生的這些奇怪的錯誤之一。根據php解析器,我得到一個語法錯誤

下面的代碼解析我的Linux的PHP 5.3.6默認安裝,在Windows上的PHP 5.4.3默認安裝,但在我們與Windows的PHP 5.3.6一些Windows機器上失敗。

我們得到的消息是:

解析錯誤:語法錯誤,在C意想不到的 '}':\ bogus.php線路7

線7是 「}」。

我只能認爲這個錯誤是由php.ini設置引起的。有人知道問題是什麼嗎?

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

嘗試去除環境中短標籤哪裏出現問題時 – Zefiryn

+0

這就像一個魅力我。你有沒有在php.ini中啓用short_open_tags?您還在<?= – verisimilitude

+0

中混合了多條語句,但我沒有啓用它。現在如果我啓用它,它就可以工作。它是好的做法(我是新來的PHP)啓用它? – Edu

回答

4

這看起來很奇怪:

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

您正在使用多個語句混合<?=。如果我是你,我會盡量避免這裏的短標籤。

但無論如何,我認爲這意味着Windows機器不會在php.ini中啓用short_open_tags。啓用它,你的問題可能會消失。

+0

可能是因爲:1)您的Linux機器上啓用了short_open_tags,並且2)無論配置如何,此標記始終在PHP 5.4中啓用。 –

+0

非常感謝!那是真的。生活的救星:-) – Edu

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?>  
1
<?php 
if(!empty($data['foo'])) { 
    echo '<div>'.$data['bar'];if(!empty($data['foo']))echo 'Foo:'.$data['foo']; 
echo '</div>'; 
} 
?> 

使用回聲功能

相關問題