2011-03-28 31 views
1

我現在有點困惑。我有這個代碼:嵌入式PHP,不能停止?

<?php $this->head(?> 
    <style type="text/css"> 
     .error { 
      background-color: #ccc; 
      border: 1px solid #999; 
      padding: 10px; 
      width: 500px; 
     } 
    </style> 
<?php); ?> 

我很確定你可以這樣做。這是非常類似:

<?php if (true) { ?> 
    Hei 
<?php } ?> 

事實上發生錯誤:

Parse error: syntax error, unexpected ';', expecting ')' in file.php on line 1 (line 1 of the code)

我怎麼能更好地解決這個問題?

+1

您是否啓用了PHP短代碼? – diagonalbatman 2011-03-28 12:41:01

+1

你想完成什麼?這應該是一個條件語句,或者你是否試圖給$ this-> head賦值? – 2011-03-28 12:42:27

回答

10

如果您嘗試將html作爲變量傳遞,請使用heredoc。

$var = <<<HTML 
    <style type="text/css"> 
    .error { 
     background-color: #ccc; 
     border: 1px solid #999; 
     padding: 10px; 
     width: 500px; 
    } 
    </style> 
HTML; 

$this->head($var); 

你不能做到這一點:

$variable = ?> <p>omgwtfbbq</p> <?; 

那只是不是有效的語法。

歐洲工商管理學院,你可以用引號(單人或雙人)

$variable = "<p>omgwtfbbq</p>"; 
+0

@布賴斯,有沒有理由避免HEREDOC?我很確定我在某處讀到HEREDOC是邪惡的或是某種東西......是對的還是我可以毫無頭緒地使用它? – Shoe 2011-03-28 12:42:57

+2

其實我沒有在一個真實的項目中使用過heredoc,當我嘗試使用它的時候,我不記得它的語法,而是去了引號:)不知道那是邪惡的,但是有一些缺點。編輯:做了一些挖掘,這裏有一些[優點和缺點](http://aaronsaray.com/blog/2008/09/08/heredoc-time-for-dead-dead-or-happy-smile-time/) – 2011-03-28 12:44:32

+0

@Bryis,它沒有解決任何問題。我的編輯器的語法高亮仍然將其視爲字符串。不管怎麼說,還是要謝謝你。 – Shoe 2011-03-28 12:47:24

2

對多行文字使用HEREDOC。

<?php 
$style = <<<EOS 

    <style type="text/css"> 
     .error { 
      background-color: #ccc; 
      border: 1px solid #999; 
      padding: 10px; 
      width: 500px; 
     } 
    </style> 
EOS; 
$this->head($style); 
?>