2012-10-17 38 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标题信息放入函数中。