vue v-html 处理后台返回的不规则 特殊符号 html

有时候会遇到后台直接返回 html 标签, 但是是一些不规则的特殊符号。eg:(‘\<; p style=“xxx“ \>;‘)或(\<p>) 等。这里直接使用 replace 及配合正则 方法去解决。下面介绍三种不规则 html 标签处理。 废话不多说,直接上代码(这里说明一下,以下内容是由其它文章获取,尊重原创)。

首先我们先看返回的不规则数据内容:

// 返回数据: 
ret : {
	list: {
		"introduct": '&lt;p style="color: lightcoral;"&gt;就&nbsp;当文字就是内容吧。&lt;/p&gt;',
	}
}
// 或者
ret : {
	list: {
		"introduct": '<span style="color: skyblue">就当文字就是内容吧。&nbsp;</p>',
	}
}

  
  
案例一:html特殊字符(’ /≤p>’) -> 转成 html标签(<p>)

// 返回数据带有html特殊字符的话直接用 v-html 在页面上显示的是 html标签
<body>
    <div id="app">
        <div class="fd">
            {{message}}
            // 如果需要数据中的样式的可以直接 v-html 指令渲染这个字段就能渲染出来了
            <div class="box" v-html="'v-html: ' + message"></div>
            <button class="btn" @click="click1">dianwo</button>
        </div>
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
	var app = new Vue({
	        el: '#app',
	        data: {
	            message: '<p style="color: lightcoral;">就 当文字就是内容吧。</p>'
	        },
	        methods: {
	            click1() {
	                this.message = this.escapeHtml(this.message)
	            },
	            // 处理方法
	            escapeHtml(str) {
	                var arrEntities = {
	                    'lt': '<',
	                    'gt': '>',
	                    'nbsp': ' ',
	                    'amp': '&',
	                    'quot': '"'
	                };
	                return str.replace(/&(lt|gt|nbsp|amp|quot);/ig, function(all, t) {
	                    return arrEntities[t];
	                });
	            },
	        }
	    })
</script>

在这里插入图片描述

案例二:html标签(<span>) -> 把 html标签 去掉
// 如果不想要后台返回在数据终的样式的话可以这样处理
<body>
    <div id="app">
        <div class="fd">
            {{message}}
            <div class="box" v-html="'v-html: ' + message"></div>
            <button class="btn" @click="click1">dianwo</button>
        </div>
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
	var app = new Vue({
        el: '#app',
        data: {
            message: '就当文字就是内容吧。 '
        },
        methods: {
            click1() {
                this.message = this.delHtmlTag(this.message)
            },
            // 处理方法
            delHtmlTag(str) {
                return str.replace(/<[^>]+>/g, '').replace(/ /ig, "")
            }
        }
    })
</script>

在这里插入图片描述

案例三:html特殊字符(’ /≤p>’) -> 去掉特殊字符
// 如果返回的带有 html特殊字符 都不要 结合上面两个方法 改吧改吧 就能瞒住要求了
<body>
    <div id="app">
        <div class="fd">
            {{message}}
            <div class="box" v-html="'v-html: ' + message"></div>
            <button class="btn" @click="click1">dianwo</button>
        </div>
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
	var app = new Vue({
        el: '#app',
        data: {
            message: '就当文字就是 内 容吧'
        },
        methods: {
            click1() {
                this.message = this.escapeHtml(this.message)
            },
            // 终极 处理方法
            escapeHtml(str) {
                var arrEntities = {
                    'lt': '<',
                    'gt': '>',
                    'amp': '&',
                    'quot': '"'
                };
                let htmlTag = str.replace(/&(lt|gt|amp|quot);/ig, function(all, t) {
                    return arrEntities[t];
                });
                // console.log(htmlTag);
                return htmlTag.replace(/<[^>]+>/g, '').replace(/ /ig, "")
            },
        }
    })
</script>

在这里插入图片描述

尊重原创附上原文链接:https://blog.csdn.net/weixin_50336155/article/details/116134260

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值