gpt4 book ai didi

html - 忽略来自另一个
的未关闭标签?

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:35 24 4
gpt4 key购买 nike

我有一个网站,成员(member)可以在其中使用有限的 HTML 子集输入文本。当显示包含用户文本的页面时,如果他们有任何未关闭的标签,则格式“渗入”到下一个区域。例如,如果用户输入:

Hi, my name is <b>John

然后,页面的其余部分将变为粗体。

理想情况下,我可以做的事情就是这么简单:

<div contained>Hi, my name is <b>John</div>

并且没有标签可以从那个 div 中流出。假设没有这么简单的事情,我将如何实现类似的效果?或者,有这么简单的事情吗?

重要的是,我不想验证用户的输入并在他们有未关闭的标签时返回错误,因为我想为我的用户提供“最简单”的用户界面。

谢谢!

最佳答案

我有 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

?>

你可以像这样使用这个函数

   <?php echo closetags("your content <p>test test"); ?>

关于html - 忽略来自另一个 <div> 的未关闭标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3059309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com