2012-03-05 51 views
2

男人,我可以發誓我在某處看到它,縮短<?php echo $var ?>構造的有用語法,我認爲它是<?=$var?>,但它不起作用。我已經搜索了大約半個小時,但無法找到再次告訴我的網站,我無法弄清楚正確的語法。

我是幻覺還是真的有這樣的語法?

<div style="background-color:<?=$backgroundColorFromPhp?>"> 
    Hello <?=$name?>! 
</div> 
+7

http://www.php.net/manual/en/ini.core.php#ini.short-open-tag和http: //www.php.net/manual/en/ini.core.php#ini.asp-tags – Tomalak 2012-03-05 23:04:46

+0

Tomalak的評論是正確的答案! – 2012-03-05 23:08:33

+0

@Tomalak我很擔心我的谷歌搜索技巧..:/您介意給出答案嗎? Thx – 2012-03-05 23:09:20

回答

6

PHP有php.ini中的short_open_tag指令使此語法:

<? PHP code here; ?> 

而非<?php PHP code here; ?>

這也使

<?= variable ?> 

<? echo variable; ?>的簡寫。該文檔指出,無論short_open_tag設置如何,將啓用PHP 5.4.0 <?=

非常相似的是asp_tags。它使傳統的ASP風格的語法:

<% PHP code here; %> 
<%= variable %> 

這哪裏是回聲語法速記最初來自。附註:在傳統的ASP <%= ...將取代相當冗長形式:

<% Response.Write variable %> 
+0

有PHP複製ASP echo-shorthand語法嗎? – dynamic 2012-03-05 23:52:26

+0

@ yes123我一直認爲它就是這樣。我承認我不確定。 – Tomalak 2012-03-06 00:08:33

2

當short_open_tag的值爲已啓用,

<?= $backgroundColorFromPhp ?> 

<?php echo $backgroundColorFromPhp; ?> 

快捷然而,如果short_open_tag的值爲被禁用,

<?= $backgroundColorFromPhp ?> 

也將被禁止(現有到PHP 5.4)。

0

你正在嘗試做應該做如下

 <div style="background-color:<?=$backgroundColorFromPHP ?>"> 
      Hello <?=$name ?>! 
    </div> 

總之,離開後的一個空間的最後?馬克

前,請嚴格避免呼應你的HTML內容。這只是一種糟糕的風格。始終保持php代碼與html元素分離的動態性。

+1

這在我遇到的任何實現中都不是必需的。 – rockerest 2012-03-05 23:10:46

+2

這裏唯一的區別是,結束標籤'?>'與變量名之間的空格是分隔的嗎?這並不能解決問題,'short_open_tags'是解決方案。 :)而那額外的空白並沒有使任何差異其實.. – 2012-03-05 23:10:59

1

是的,這是正確的,給出了一些注意事項。

首先,您必須有short tags on。根據我的經驗,這是默認配置,正如上面的文檔所述;

其次,您需要PHP解析文件。如果該文件是.html文件,則不會由php引擎自動分析。您需要通過某種方式運行它,或者告訴php默認閱讀.html文件。

最後,我喜歡將end statement分號放在那裏(使其成爲<?=$name;?>),但我相信這是一個優先選擇。

+0

最解釋的答案,謝謝。 :)不明白爲什麼它沒有啓用,修改php.ini不起作用,但設置WAMP值。 *編輯*:Tomalek首先對他的評論,對不起。 ;) – 2012-03-05 23:13:23

+0

@NiklasR完美公平,很樂意爲您服務! – rockerest 2012-03-06 01:34:36

1

在php中確實有類似這樣的語法,它只有在設置服務器使其工作時才起作用,這稱爲簡寫,但強烈建議不要使用此技術,因爲有些服務器在禁用它並可能提供某些不明身份的錯誤使用錯誤。我想我第一次看到這是在wordpress上使用。 )

+0

無論ini設置如何,<?='都可以在PHP 5.4上運行 – Gordon 2012-03-06 09:09:12

+0

感謝提供的信息@Gordon沒有想到他們已經將它包含在最新版本中,最終我真的認爲大多數人應該真的更新他們的服務器到這個新的版。 ;) – 2012-03-06 23:29:48