今天在看別人的php程式碼時候,發現
<code><span><span><?php </span><span>$a</span>=<span>'test'</span>; <span>?></span></span><span><span></span>=<span>$a</span><span>?></span></span></span></code>
結果還真的輸出了’test’
於是我將程式碼改成如下:
<code><span><span><?php </span><span>$a</span>=<span>'test'</span>; <span>?></span></span><span><span></span><span>echo</span><span>$a</span><span>?></span></span></span></code>
結構什麼都沒有,於是我更加好奇。開始查找資料之類。 。 。
網路資料: ?>
是短標籤,<?php ?>
是長標籤,端標籤一般很少用,指令=
,它和 echo
是等價的,但是使用前需開啟short_open_tag 。
short_open_tag 是什麼呢?
決定是否允許使用代碼開始標誌的縮寫形式( ?>
)。
在php.ini中可以對其進行配置。
問題:我查看自己的php.ini設定文件,發現short_open_tag 並沒有開啟。如下圖:
但為什麼依舊可以使用=
難道是有多個php.ini,我不知道,所以我透過phpinfo();來查看
發現short_open_tag = Off。
那麼=
為什麼可以使用,還是解決不了?
於是我將啟動short_open_tag,即設定short_open_tag = On,然後重新啟動伺服器。發現
<code><span><span></span><span>echo</span><span>'hello'</span>; <span>?></span></span></code>
可以輸出結果了。
總結:原來short_open_tag控制的是 ?>
標籤。而並非= ?>
標籤,= ?>
標籤用於輸出變數。當開啟short_open_tag, ?>
功能和<?php ?>
一樣。
如果設定了asp_tags = ON,那麼我們還可以這樣玩
<code>$a=<span>'hello'</span>; <span>echo</span><span>$a</span>; %></code>
備註使用的php版本是:PHP Version 5.5.12
現在總結一下,PHP的幾個開始和結束標記
<?php
?>
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i