在node.js中删除属性并将其添加到html字符串

时间:2019-01-07 18:55:54

标签: javascript html node.js

因此,在我的node.js后端上,我有一个带有content属性的对象,其中包含HTML字符串。现在在其中有一个img元素,我想将src属性(现在是base64字符串)替换为我的上载文件夹的路径。如何更改此src属性?

这是必填内容。我想将img元素的base64 src替换为我选择的内容

{ content: '<p><br></p><p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAmVBMV.. }

2 个答案:

答案 0 :(得分:1)

如果您确定字符串中只有一幅图像,则可以使用正则表达式替换:

let new_content = content.replace(/src="[^"]+"/, 'src="new contents of the attribute"');

这将替换HTML中的每个src属性,因此请确保您没有多个。
如果您有更具体的需求,我通常使用cheerio(https://www.npmjs.com/package/cheerio)加载html并像在jquery(-ish)中一样对其进行编辑。

(正则表达式中的[^"]+代表“匹配不是"的多个字符,这通常是我在已知边界内选择某些内容的方式)

答案 1 :(得分:1)

您可以使用正则表达式替换该字符串

let newPath = "some/where/local/img.png";
let replaced = req.body.content.replace(/src="(.+?)"/igm, "src='"+newPath+'")

如果您不知道html结构,例如需要查找所有图像,则应使用cheeriojsdom之类的东西来解析html字符串,在虚拟dom中进行更改。 / p>