diff --git a/src/adaptors/web/csdn/csdnUtils.ts b/src/adaptors/web/csdn/csdnUtils.ts index 76c60cef..8294600a 100644 --- a/src/adaptors/web/csdn/csdnUtils.ts +++ b/src/adaptors/web/csdn/csdnUtils.ts @@ -87,7 +87,7 @@ class CsdnUtils { public static processCsdnMath(html: string): string { // 使用Cheerio加载HTML - const $ = cheerio.load(html, { xmlMode: true }) + const $ = cheerio.load(html, { xmlMode: true, decodeEntities: false }) // 处理两个$符号包裹的公式 const doubleDollarRegex = /\$\$([^$]+)\$\$/g diff --git a/src/adaptors/web/zhihu/zhihuUtils.ts b/src/adaptors/web/zhihu/zhihuUtils.ts index be547602..428b1120 100644 --- a/src/adaptors/web/zhihu/zhihuUtils.ts +++ b/src/adaptors/web/zhihu/zhihuUtils.ts @@ -62,58 +62,78 @@ class ZhihuUtils { public static processZHMath(html: string): string { // 使用Cheerio加载HTML - const $ = cheerio.load(html, { xmlMode: true }) + const $ = cheerio.load(html, { xmlMode: true, decodeEntities: false }) - // // 选择所有带有类名"language-math"的元素 - // $("span.language-math").each((index, element) => { - // // 获取元素的文本内容 - // const mathContent = $(element).text() - // - // // 创建替代的标签 - // const imgTag = `${mathContent}` - // - // // 用新的标签替换原始元素 - // $(element).replaceWith(imgTag) - // }) - // - // // 选择所有带有类名"language-math"的
元素 - // $("div.language-math").each((index, element) => { - // // 获取元素的文本内容 - // const mathContent = $(element).text() - // - // // 创建替代的标签 - // const imgTag = `

${mathContent}

` - // - // // 用新的标签替换原始元素 - // $(element).replaceWith(imgTag) - // }) + // 处理两个$符号和一个$符号包裹的公式 + const mathRegex = /\$\$([^\$]+)\$\$|\$([^\$]+)\$/g - // 处理两个$符号包裹的公式 - const doubleDollarRegex = /\$\$([^$]+)\$\$/g - $("*:not(pre)").each((index, element) => { - const content = $(element).html() - const newContent = content.replace(doubleDollarRegex, (match, mathContent) => { + const elems = $("*:not(pre)") + elems.each((_index, element) => { + const content = $(element).html() ?? "" + const newContent = content.replace(mathRegex, (_match, doubleDollarContent, singleDollarContent) => { + const mathContent = doubleDollarContent || singleDollarContent return `${mathContent}` - }) - $(element).html(newContent) - }) - - // 处理一个$符号包裹的公式 - const singleDollarRegex = /\$([^$]+)\$/g - $("*:not(pre)").each((index, element) => { - const content = $(element).html() - const newContent = content.replace(singleDollarRegex, (match, mathContent) => { - return `${mathContent}` + alt="${mathContent}" />` }) $(element).html(newContent) }) // 输出修改后的HTML return $.html() + + // // 使用Cheerio加载HTML + // const $ = cheerio.load(html, { xmlMode: true }) + // + // // // 选择所有带有类名"language-math"的元素 + // // $("span.language-math").each((index, element) => { + // // // 获取元素的文本内容 + // // const mathContent = $(element).text() + // // + // // // 创建替代的标签 + // // const imgTag = `${mathContent}` + // // + // // // 用新的标签替换原始元素 + // // $(element).replaceWith(imgTag) + // // }) + // // + // // // 选择所有带有类名"language-math"的
元素 + // // $("div.language-math").each((index, element) => { + // // // 获取元素的文本内容 + // // const mathContent = $(element).text() + // // + // // // 创建替代的标签 + // // const imgTag = `

${mathContent}

` + // // + // // // 用新的标签替换原始元素 + // // $(element).replaceWith(imgTag) + // // }) + // + // // 处理两个$符号包裹的公式 + // const doubleDollarRegex = /\$\$([^$]+)\$\$/g + // $("*:not(pre)").each((index, element) => { + // const content = $(element).html() + // const newContent = content.replace(doubleDollarRegex, (match, mathContent) => { + // return `${mathContent}` + // }) + // $(element).html(newContent) + // }) + // + // // 处理一个$符号包裹的公式 + // const singleDollarRegex = /\$([^$]+)\$/g + // $("*:not(pre)").each((index, element) => { + // const content = $(element).html() + // const newContent = content.replace(singleDollarRegex, (match, mathContent) => { + // return `${mathContent}` + // }) + // $(element).html(newContent) + // }) + // + // // 输出修改后的HTML + // return $.html() } }