我有一个应用程序,用户可以在其中编写包含HTML代码的注释,该代码在显示之前进行转义:
<div class="card-body">
<p class="card-text">
<h1>HOLA</h1> Cita:#2<h1>HOLA</h1> <h1>HOLA</h1> Cita:#6<h1>HOLA</h1> <h1>HOLA</h1>
</p>
</div>
但是当用户写一个像"Cita:#1“这样的特定单词时,我想用jQuery把它转换成一个链接,这样以后我就可以用下面的代码加载一个Ajax弹出窗口:
$('.card-text').each(function() {
$(this).html($(this).text().replace(/Cita:#(\d+)/ig, '<a href="#" title="Header" data-toggle="popover" data-trigger="hover" data-content="Some content">Cita:#$1</a>'));
});
我的问题是,它做得很好,但也转换了该注释中所有可能的HTML标记。
有没有一种方法可以忽略评论中的所有标签,只用一个链接替换单词"Cita:#1“并使其生效?
实际:
期望值:
发布于 2019-05-09 03:30:36
因为您在这里控制服务器端,所以在PHP中更容易做到这一点:
$string = '<h1>HOLA</h1> Cita:#2<h1>HOLA</h1> <h1>HOLA</h1> Cita:#6<h1>HOLA</h1> <h1>HOLA</h1>';
$string = htmlspecialchars($string);
$string = preg_replace(
'/Cita:#(\\d+)/i',
'<a href="#" title="Header" data-toggle="popover" data-trigger="hover" data-content="Some content">Cita:#$1</a>',
$string
);
echo $string;
输出:
<h1>HOLA</h1> <a href="#" title="Header" data-toggle="popover" data-trigger="hover" data-content="Some content">Cita:#2</a><h1>HOLA</h1> <h1>HOLA</h1> <a href="#" title="Header" data-toggle="popover" data-trigger="hover" data-content="Some content">Cita:#6</a><h1>HOLA</h1> <h1>HOLA</h1>
https://stackoverflow.com/questions/56012716
复制相似问题