首页 > 编程语言 >使用uni-app写小程序,解析含有html标签的富文本

使用uni-app写小程序,解析含有html标签的富文本

时间:2023-03-23 10:57:34浏览次数:44  
标签:app newContent replace html match uni 文本 gi

最近在改一个项目,将html+js+css的项目改成小程序,我说使用的uni来写的,其中遇到一个问题,就是需要解析富文本,在vue中可以直接使用v-html,

但是小程序中的标签都是view,text以及image等,该怎么办呢

于是在uni官网找到插件u-parse

<u-parse :content='dangquestion.question' className='texttitle' :imageProp='imageProp'></u-parse> 

  dangquestion.question是需要展示的富文本字符串,texttitle是类名,可以自己写样式,imageProp,是图片样式,,格式如下

          imageProp:{
                    mode:'aspectFit',
                    domain:'图片的服务器根域名',//富文本中图片一般是'upload/img/1.png'
                    padding:10,
                    lazyLoad:false
                },

  于是下载引用,但是发现一个问题,图片不能完好的展示,并且在span,img标签外包裹一层view标签,使页面不能完全按照富文本展示

后来发现有一个很好的用法

  <rich-text :nodes="content" class="texttitle"></rich-text>

  texttitle是自己定义的样式,content是需要展示的富文本字符串

content需要自己先解析一下,如下

formatRichText(html) {
	let newContent = html.replace(/<img[^>]*>/gi, function(match, capture) {
	  match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
	  match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
	  match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
	  return match;
	});
	=newContent = newContent.replace(/style="[^"]+"/gi, function(match, capture) {
	  match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');
	  return match;
	});
	newContent = newContent.replace(/<br[^>]*\/>/gi, '');
	newContent = newContent.replace(/\<img/gi,
	  '<img style="max-width:100%;height:auto;display:inline-block;margin:10rpx auto;"');
	return newContent;
}

 html是传递的参数,就说包含html标签的富文本,如下

 let str='<p><span style=\"color: rgb(0, 0, 0); font-size: 16px;\"><strong>女,28岁。</strong></span></p>'

 想要获取content需要   this.content=this.formatRichText(str)

根据以上,带入相应参数即可,可以完美展示富文本,图片大小也可根据富文本样式一比一展示。

完结。

标签:app,newContent,replace,html,match,uni,文本,gi
From: https://www.cnblogs.com/bingchenzhilu/p/17246624.html

相关文章

  • 为 Linux 下 .AppImage 运行文件快速生成桌面和任务栏图标 .sh 文件
    Ihadafriendmakeaninstallshfile:ItseemstoworkwellandIgetaniconaddedtomyubuntuleftappshortcutbar.Hereitisbelow.Iwilldeliverazi......
  • HTML+JS+CSS实现图片文件上传界面设计的例子
    在JavaWeb应用程序设计中文件上传功能的实现是一项非常重要的工作,本文中的例子程序实现了文件上传功能的界面设计。在JavaWeb应用程序设计中涉及到上传图片文件功能......
  • Unity中,区别LookAt与LookRotation 一直不太理解的问题.....
    详细的资料可以看这个大佬总结的:参考资料我这里直接用图结合着说:首先呢,我们的主角要看向敌人,下图是还没看向之前:  使用LookAt函数看向敌人后,Z轴看向敌人(也是正面看......
  • jsp和html的区别
    JSP代表JavaServerPages;它主要用于开发动态网页,文件的扩展名为.jsp。JSP技术允许快速开发并易于维护所述信息丰富的动态网页。JSP网页基于HTML,XML或其他文档类型。他们还......
  • 【Javaweb】html frame标签的使用 | 导航栏右侧内容的实现
    问题的产生:是我和同伴做了一个导航栏,但是我们不知道怎么实现右侧内容的切换    然后我们查了很多资料,但是有一些是垂直的,但是就如图可见,我们是水平的,那么怎么实......
  • 【Azure 应用服务】App Servie网站报403 ModSecurity Action错误
    问题描述AppService部署应用程序,然后通过AppGateway(WAF)提供公网访问,但是一直遇见403报错,刷新页面,回退,重新Web页面能缓解403问题。 问题分析通过浏览器F12抓取网......
  • 使用unity构建射击小游戏
    使用unity构建射击小游戏成果图参考例程www.manning.com/hocking问题汇总1、renderer.material方法过时换成使用this.GetComponent()参考网址:https......
  • HTML之媒体元素
    1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<title>媒体元素测试</title>6</head>7<body>8<!--9src:资源路径......
  • uniapp使用uni.createSelectorQuery()获取高度为null
    添加定时器后获取setTimeout(()=>{constquery=uni.createSelectorQuery().in(this);query.select('.content').boundingClientRect((data)=>{console.log('da......
  • POJ - 3321 Apple Tree
    原题链接思路答案不好直接维护,所以,我们可以采用DFS序来解决这一问题。设\(l_u\)是以\(u\)为根的子树中最小的时间戳,\(r_u\)是以\(u\)为根的子树中最大的时间戳......