Update HtmlFormatter.kt

pull/1133/head
bushixuanqi 3 years ago committed by GitHub
parent 410dc45ce0
commit 58d55fcbe2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      app/src/main/java/io/legado/app/utils/HtmlFormatter.kt

@ -32,7 +32,7 @@ object HtmlFormatter {
var hasMatch = true //普通图片标签是否还未处理过 var hasMatch = true //普通图片标签是否还未处理过
var hasMatchX = false //是否存在带参数或带数据属性的图片标签 var hasMatchX = false //是否存在带参数或带数据属性的图片标签
var pos = -1 var pos = -1
val list = listOf("<img[^>]*src *= *\"([^\"]+?,\\s*\\{(?:[^{}]|\\{[^}]+\\})+\\})\"[^>]*>","<img[^>]*data-[^=]*= *\"([^\"]+)\"[^>]*>","<img[^>]*src *= *\"([^\"]+)\"[^>]*>") //优先匹配用户处理过所以带参数的图片标签,其次匹配带数据属性的图片标签 val list = listOf("<img[^>]*src *= *\"([^\"]*?,\\s*\\{(?:[^{}]|\\{[^}]+\\})+\\})\"[^>]*>","<img[^>]*data-[^=]*= *\"([^\"]*)\"[^>]*>","<img[^>]*src *= *\"([^\"]*)\"[^>]*>") //优先匹配用户处理过所以带参数的图片标签,其次匹配带数据属性的图片标签
while(++pos<3){ while(++pos<3){
if(pos == 2) { if(pos == 2) {
if(hasMatchX)break //普通图片标签只在不存在存在带参数或带数据属性的图片标签的时候匹配 if(hasMatchX)break //普通图片标签只在不存在存在带参数或带数据属性的图片标签的时候匹配
@ -48,7 +48,7 @@ object HtmlFormatter {
if (hasMatch) { //格式化不带参数和数据属性的普通图片标签 if (hasMatch) { //格式化不带参数和数据属性的普通图片标签
var appendPos0 = 0 var appendPos0 = 0
val matcher0 = Pattern.compile("<img[^>]*src *= *\"([^\"]+)\"[^>]*>", Pattern.CASE_INSENSITIVE).matcher(strBefore) //格式化普通图片标签 val matcher0 = Pattern.compile("<img[^>]*src *= *\"([^\"]*)\"[^>]*>", Pattern.CASE_INSENSITIVE).matcher(strBefore) //格式化普通图片标签
while (matcher0.find()) { while (matcher0.find()) {
sb.append(strBefore.substring(appendPos0, matcher0.start()),"<img src=\"${NetworkUtils.getAbsoluteURL(redirectUrl,matcher0.group(1)!!)}\">") sb.append(strBefore.substring(appendPos0, matcher0.start()),"<img src=\"${NetworkUtils.getAbsoluteURL(redirectUrl,matcher0.group(1)!!)}\">")
appendPos0 = matcher0.end() appendPos0 = matcher0.end()
@ -82,7 +82,7 @@ object HtmlFormatter {
var appendPos0 = 0 var appendPos0 = 0
val strBefore = keepImgHtml.substring(endPos, keepImgHtml.length) val strBefore = keepImgHtml.substring(endPos, keepImgHtml.length)
val matcher0 = val matcher0 =
Pattern.compile("<img[^>]*src *= *\"([^\"]+)\"[^>]*>", Pattern.CASE_INSENSITIVE) Pattern.compile("<img[^>]*src *= *\"([^\"]*)\"[^>]*>", Pattern.CASE_INSENSITIVE)
.matcher(strBefore) //格式化普通图片标签 .matcher(strBefore) //格式化普通图片标签
while (matcher0.find()) { while (matcher0.find()) {
str.append(strBefore.substring(appendPos0, matcher0.start()),"<img src=\"${ NetworkUtils.getAbsoluteURL( redirectUrl, matcher0.group(1)!! ) }\">") str.append(strBefore.substring(appendPos0, matcher0.start()),"<img src=\"${ NetworkUtils.getAbsoluteURL( redirectUrl, matcher0.group(1)!! ) }\">")

Loading…
Cancel
Save