2014-03-01 41 views
-1

我試圖理解爲什麼HTML會自動執行以下操作:HTML,自動中和PHP的標籤

這是一些代碼示例:

<? 
$obj = ['name' => 'someValue', 'age' => 55]; 

將導致:

<!--? 
$obj = ['name' =--> 'someValue', 'age' => 55]; 

該文件的.htm,所以我發現<?>轉換爲打開和關閉HTML註釋標記<!---->

我發現的主要問題是與?,如果我刪除?不會有問題,如果有人知道爲什麼越獄完成後,是否有一個理由<?>進行轉義?有沒有隻有<?>那個主動這個動作?,我真的失去了這裏,如果有人能幫助我會非常感激。

編輯:

  1. 我使用
  2. 的問題是在本地發生的(文件://),並通過域。
  3. 我使用Apache和.htm文件不解析的PHP引擎。
  4. 我不想將該文件解析爲php文件。
+1

爲什麼您的PHP文件首次具有擴展名「.htm」 –

+0

您沒有指定是否從Web服務器或本地打開它,是否解釋該文件,或者使用哪個瀏覽器解析該文件辦法。任何人應該如何幫助你? – Kissaki

+0

你在使用什麼軟件?一個可以編輯文件的CMS? – Lexib0y

回答

1

在XML中,序列<?開始的「處理指令」,用一個名稱,可選屬性,和一個閉合?>。例如,<?xml-stylesheet href="my-style.css"?>將CSS樣式表應用於XML文檔。 PHP的標準開始標記(<?php)在技術上是一個有效的PI(雖然並未真正用於此),但「短標記」<?不是。

雖然HTML不是,在大多數情況下,XML,也有共同的特點,這樣瀏覽器就可以從這個角度解釋你的<?。另一方面,他們可能只是將其視爲HTML標籤,因爲任何以<開頭的應該是,但<?不是有效的標籤。請注意,該評論已設置爲在下次發生>時結束,因爲這通常會結束標記。

源代碼中的註釋標記是瀏覽器對無效標記的重新解釋 - 因爲它位於無效標記內,它不應該顯示在輸出中,因此將其視爲註釋是等同的從呈現的表示中刪除它。

如果你的目的是要顯示PHP文件的源代碼,你需要先HTML逃避它,從而使<?成爲&lt;?;這會導致它在屏幕上顯示爲<?,而不是被解釋爲(損壞的)HTML。

+0

謝謝IMSoP,我想我現在明白了。 –