DOMDocument :: loadHTML()中的实体中的意外结束标记p错误

ali*_*ali 1 php compiler-errors domdocument

为什么我会收到此代码的警告?

$content ='<p>
 <a href="http://www.we.com/1000">text </a>
 text 
 <a href="http://www.we.com/2345">text </a>
  text 
</p>

<p>text</p>

<p>
  <table border="1" cellpadding="0" cellspacing="0" dir="rtl"> 
      <tbody> 
          <tr> 
              <td>text </td> 
              <td>text </td> 
              <td>text </td> 
          </tr> 
          <tr> 
              <td>text </td> 
              <td>text </td> 
              <td>text </td> 
          </tr> 
      </tbody> 
  </table>
</p>';

$doc = new DOMDocument('1.0', 'UTF-8');
$doc->loadHTML($content);
Run Code Online (Sandbox Code Playgroud)

警告是:

警告:DOMDocument :: loadHTML():意外结束标记:实体中的p,第2213行的/home/admin/domains/we.com/public_html/refresh/lib/core.php中的第25行<p> <a href =“ http://www.we.com/1000 ” > 文本 </a>文本<a href=" http://www.we.com/2345">文本 </a>文本</ p> < p> text </ p> <p> </ p> <table border =“ 1” cellpadding =“ 0” cellspacing =“ 0” dir =“ rtl”> <tbody> <tr> <td> text </ td > <td>文本</ td> <td>文本</ td> </ tr> <tr> <td>文本</ td> <td>文本</ td> <td>文本</ td> </ tr> </ tbody> </ table>

joa*_*ash 7

添加@以抑制警告,如下所示

@$doc->loadHTML($content);
Run Code Online (Sandbox Code Playgroud)

这是因为大多数 HTML 对象的格式并不完美,甚至像“p”这样的元素也会自动关闭


Que*_*tin 5

段落的结束标记是可选的。表格可能不会出现在段落中。表开始标记隐式结束该段落。下一段结束标签没有要关闭的打开段落。

请参阅p规范中的 “ text / html中标签省略” 。

  • 要禁用警告,请使用“libxml_use_internal_errors(true);”,更多信息请参见 /sf/answers/827374481/ (2认同)