2012-10-17 60 views
0

我寫了一個函數,其中包含與站點標題相關的代碼。這是功能:Stray html標籤 - 發佈Netbeans警告

首先,是否有任何問題,如上述任何東西?其次,Netbeans在html標籤中發出一個警告:Stray start html tag here。 我想這是因爲html標籤被包含在一個函數中,並且這個函數不包含結束標籤 - 我假設。

function output_headers() 
{?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Appointmetns24x7</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<link rel="stylesheet" href="css/admingeneral.css"/> 
script type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" ></script> 
</head> 
<body> <?php 
} 

如果這個編碼方案沒有問題,那麼我會忽略netbeans警告並繼續。

+0

我想你看看一個奇妙的函數[包括](http://php.net/include)或[require](http://php.net/require) – Touki

+0

@Baba new to stack overflow,我仍然在學習 –

回答

3

實際的錯誤消息是由於<body>標記未關閉造成的。 Netbeans正在採取這種行動,並警告你HTML可能無效......因爲它是無效的。 Netbeans無法僅僅通過查看這個函數就知道它不應該是一個完整的HTML文檔。

如果您必須這樣做,您應該避免在不同代碼塊之間分割單個HTML標籤。最佳做法是確保輸出HTML標籤的任何函數也輸出相應的結束標籤。

但是,你做事情的方式在任何情況下都不理想。

你已經將你的模板分成了'header'和(可能是)'footer'函數。這種技術在幾年前是很常見的,但現在這並不被認爲是特別好的做法。

一個更好的方法是擁有一個單獨的模板文件,它包含所有的HTML - 即頁眉和頁腳,以及佔位符,您想要動態內容去。然後,您將動態內容位構建爲字符串,並將它們提供給模板。

以最簡單的形式,這僅表示該模板是一個帶有PHP塊的普通HTML文件,適用於像<?php echo $mainBodyCode; ?>這樣的佔位符。然後您只需確保佔位符變量已填充,並在您希望輸出頁面時包含它。

希望有所幫助。

+0

是的......你說得對。我會重新考慮我的代碼。順便說一下......我刪除了body標籤,現在html標籤存在問題...出於我已經提到的原因。 –

1

我會坐在流浪標籤是

xmlns="http://www.w3.org/1999/xhtml" 

,因爲你叫<!DOCTYPE html>這是不是XHTML,因此調用的XML命名空間是無效的。

+0

這是一個很好的觀點,但不是錯誤抱怨什麼。 (它抱怨''被打開但沒有在代碼中關閉) – SDC

+0

是的,你是對的。因爲這是一個HTML5文檔,xml命名空間是無效的,但警告是相同的。上述函數中的每一行在Netbeans中都有一個警告,前面有一個單詞stray:stray tag head ... stray html tag –

+0

@SDC你是對的......但是這個代碼不可避免地包含關閉主體標籤...其目標是僅包含標頭 –

1

看來,如果你在函數內部包含了根類型的html(html標籤)元素,然後關閉它們在函數外的腳本之外的位置上,開始標記被設置 - 然後這被解釋爲Netbeans中的錯誤。

有人可以選擇忽略它,否則他應該避免這種方式編碼,將html標題信息放入函數中。