From 8503854cab7f57036e0bd7598117703ab12c02ea Mon Sep 17 00:00:00 2001
From: youke2580 <56914697+youke2580c@users.noreply.github.com>
Date: Thu, 26 Jun 2025 21:06:42 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BC=98=E5=8C=96img?=
=?UTF-8?q?=E5=9B=BE=E7=89=87=E6=A0=BC=E5=BC=8F=E5=8C=96=E8=A7=84=E5=88=99?=
=?UTF-8?q?=20(#5206)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* 更新 AppPattern.kt
img src图片链接支持单引号'
* 更新 AppPattern.kt
img图片链接支持data-src属性
* 更新 AppPattern.kt
img 图片链接支持其它data-.+属性
* 更新 HtmlFormatter.kt
修复优化html img格式化规则,支持单引号',修正src属性优先级
* 更新 HtmlFormatter.kt
优化html img格式化规则,data-src|src优先取值非空
* 更新 AppPattern.kt
优化还原
* 更新 HtmlFormatter.kt
优化src标签优先级
* 更新 HtmlFormatter.kt
优化
* 更新 HtmlFormatter.kt
还原
---
app/src/main/java/io/legado/app/constant/AppPattern.kt | 2 +-
app/src/main/java/io/legado/app/utils/HtmlFormatter.kt | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/src/main/java/io/legado/app/constant/AppPattern.kt b/app/src/main/java/io/legado/app/constant/AppPattern.kt
index 6727bb472..20d9ddb4e 100644
--- a/app/src/main/java/io/legado/app/constant/AppPattern.kt
+++ b/app/src/main/java/io/legado/app/constant/AppPattern.kt
@@ -9,7 +9,7 @@ object AppPattern {
val EXP_PATTERN: Pattern = Pattern.compile("\\{\\{([\\w\\W]*?)\\}\\}")
//匹配格式化后的图片格式
- val imgPattern: Pattern = Pattern.compile("
]*src=\"([^\"]*(?:\"[^>]+\\})?)\"[^>]*>")
+ val imgPattern: Pattern = Pattern.compile("
]*src=['\"]([^'\"]*(?:['\"][^>]+\\})?)['\"][^>]*>")
//dataURL图片类型
val dataUriRegex = Regex("^data:.*?;base64,(.*)")
diff --git a/app/src/main/java/io/legado/app/utils/HtmlFormatter.kt b/app/src/main/java/io/legado/app/utils/HtmlFormatter.kt
index 2d08a9dfe..5b67b4ad1 100644
--- a/app/src/main/java/io/legado/app/utils/HtmlFormatter.kt
+++ b/app/src/main/java/io/legado/app/utils/HtmlFormatter.kt
@@ -14,7 +14,7 @@ object HtmlFormatter {
private val notImgHtmlRegex = "?(?!img)[a-zA-Z]+(?=[ >])[^<>]*>".toRegex()
private val otherHtmlRegex = "?[a-zA-Z]+(?=[ >])[^<>]*>".toRegex()
private val formatImagePattern = Pattern.compile(
- "
]*\\ssrc\\s*=\\s*\"([^\"{>]*\\{(?:[^{}]|\\{[^}>]+\\})+\\})\"[^>]*>|
]*\\sdata-[^=>]*=\\s*\"([^\">]*)\"[^>]*>|
]*\\ssrc\\s*=\\s*\"([^\">]*)\"[^>]*>",
+ "
]*\\ssrc\\s*=\\s*['\"]([^'\"{>]*\\{(?:[^{}]|\\{[^}>]+\\})+\\})['\"][^>]*>|
]*\\s(?:data-src|src)\\s*=\\s*['\"]([^'\">]+)['\"][^>]*>|
]*\\sdata-[^=>]*=\\s*['\"]([^'\">]*)['\"][^>]*>",
Pattern.CASE_INSENSITIVE
)
private val indent1Regex = "\\s*\\n+\\s*".toRegex()