整洁不关闭 <hr> 标签

Tidy not closing <hr> tag

我正在尝试使用 tidy 函数来清理没有结束 </hr> 标记的 html 字符串:

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

但是当我使用以下行时:

$tidy = tidy_parse_string($data);
tidy_clean_repair($tidy);
echo ($tidy);

未添加 </hr> 标签,输出:

<html>
<head>
<title>301 Moved Permanently</title>
</head>
<body bgcolor='white'>
<center>
<h1>301 Moved Permanently</h1>
</center>
<hr>
<center>nginx</center>
</body>
</html>

整洁的库是否无法关闭 <hr> 标签,还是我遗漏了什么?

嗯,<hr>(主题中断)标签不是要关闭的标签。

来自W3C -> hr

The hr element is a void element. An hr element must have a start tag but must not have an end tag.


如果你真的需要,你可以这样做:

$html = str_replace('<hr>', '<hr/>', $html);

这将假装标签是自动关闭并防止SimpleXMLElement因不关闭它而歇斯底里。