HTML输出并不是我所期望的


HTML output is not what I expect it to be

我在php方面遇到了一些问题。这是我想要的html:

<p><h1>name</h1>surname</p>

其中name和姓氏是php 中的变量

我得到的是:

<p></p> <h1>name</h1> "surname" <p></p>

这是我的php代码:

echo "<p> <h1>{$rowsList['Name']}</h1> {$rowsList['Surname']} </p>";

语义

基本语义:

  • <h1>标记用于标题
  • <p>标记用于段落

段落中不能包含标题

它在语义上是无效的,也没有意义。相反,您需要考虑删除周围的<p>标记。

来自其他来源:

StackOverflow

在HTML标记中,不可能将标题元素放在p元素中,这不仅是形式上的,而且是因为浏览器在遇到标题时会隐式终止打开的p元素。因此,这个问题毫无意义:一个不可能存在于特定上下文中的元素在该上下文中不可能有任何意义(语义)。

不使用p将文本和标题组合在一起,您可以使用div元素,也可以使用HTML5的新颖元素,如sectionarticle

W3C

根据标准,段落不应包含其他块元素(包括段落和标题)。如其他答案所示,要将页眉与段落分组,可以使用div标记。

你可以在w3c的网站上找到很多关于这个主题的信息:http://www.w3.org/TR/html401/struct/global.html#block-内联

解决方案

将PHP代码更改为:

echo "<h1>{$rowsList['Name']}</h1> <p>{$rowsList['Surname']} </p>";

参考文献:

  • 标题应该在<p>

这不是PHP的问题。这是基本的HTML。

根据文档,<p>标签可能包含短语内容。

短语内容定义为:

由与普通字符数据混合的短语元素组成。

短语元素包括:

a、 em,strong,small,mark,abbr,dfn,i,b,s,u,code,var,samp,kbd,sup,sub,q,cite,span,bdo,bdi,br,wbr,ins,del,img,embed,object,iframe,map,area,script,noscript,ruby,video,audio,input,textarea,select,button,label,output,datalist,keygen,progress,command,canvas,time,meter

注意<h1>不在其中。

所有这些都表明,文档明确暗示(???)<p><h1>...</h1></p>无效,浏览器将根据其最佳猜测进行更正。需要特别注意的是,如果右键单击并选择View Source(或View Original Source),那么您将在编写HTML时看到它——只有在DOM检查器中才能看到"更正"的版本。