HTML输出不是我所期望的

时间:2014-10-21 10:19:54

标签: php

我在使用php时遇到了一些麻烦。 这是我想要的HTML:

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

其中name和surname是php中的变量

我得到的是:

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

这是我的PHP代码:

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

2 个答案:

答案 0 :(得分:1)

语义

基本语义:

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

您不能在段落中包含标题

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

来自其他来源:

的StackOverflow

  

将标题元素放在HTML标记中的p元素中是不可能的,不仅仅是正式的,而是因为浏览器在遇到标题时会隐式终止打开的p元素。所以问题毫无意义:在某个上下文中不存在的元素在该上下文中不具有任何含义(语义)。

     

除了使用p将文字和标题组合在一起外,您还可以使用div元素,或者使用常见警告,使用HTML sectionarticle这样的HTML5新奇事物。

W3C

  

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

     

您也可以在w3c的网站上找到关于此主题的大量信息:http://www.w3.org/TR/html401/struct/global.html#block-inline

解决方案

将PHP代码更改为:

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

参考文献:

答案 1 :(得分:1)

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

根据documentation<p>标记可能包含短语内容。

Phrasing Content定义为:

  

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

Phrasing Elements是:

  

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,嵌入,对象,iframe,地图,区,脚本,noscript,红宝石,视频,音频,输入,textarea,选择,按钮,标签,输出,datalist,keygen,进展,命令,画布,时间,米

请注意<h1>不在其中。

所有这些都表明文档明确暗示(???)<p><h1>...</h1></p>无效,浏览器会将其更正为最佳猜测。特别要注意的是,如果您右键单击并选择查看源(或查看原始源),那么您在编写HTML时会看到您的HTML - 它只能在DOM检查器中显示您的#39 ;看到&#34;纠正&#34;版本