答案 0 :(得分:4)
答案 1 :(得分:4)
我有php的解决方案
<?php
// close opened html tags
function closetags ( $html )
{
#put all opened tags into an array
preg_match_all ( "#<([a-z]+)( .*)?(?!/)>#iU", $html, $result );
$openedtags = $result[1];
#put all closed tags into an array
preg_match_all ( "#</([a-z]+)>#iU", $html, $result );
$closedtags = $result[1];
$len_opened = count ( $openedtags );
# all tags are closed
if( count ( $closedtags ) == $len_opened )
{
return $html;
}
$openedtags = array_reverse ( $openedtags );
# close tags
for( $i = 0; $i < $len_opened; $i++ )
{
if ( !in_array ( $openedtags[$i], $closedtags ) )
{
$html .= "</" . $openedtags[$i] . ">";
}
else
{
unset ( $closedtags[array_search ( $openedtags[$i], $closedtags)] );
}
}
return $html;
}
// close opened html tags
&GT;
您可以使用此功能,如
<?php echo closetags("your content <p>test test"); ?>
答案 2 :(得分:1)
这不可能。
不要让用户使您的HTML无效。
如果您不想让用户修复错误,请尝试自动清除错误。
答案 3 :(得分:0)
答案 4 :(得分:0)
有一种方法可以使用HTML和JavaScript进行此操作。我不会为面向公众的网站推荐这种方法;您应该在数据到达浏览器之前清理它们。但它可能在其他情况下有用。
我们的想法是将可能无效的内容放入noscript标记中,如下所示:
<noscript class="contained">
<div>Hi, my name is <b>John</div>
</noscript>
...然后添加将加载到DOM中的javascript。使用jQuery(但可能没有必要):
$("noscript.contained").each(function () {
$(this).replaceWith(this.innerText);
});
请注意,没有javascript的用户仍会遇到您要避免的“流血”。