使用数据库中的html标记打印文本-Javascript
我正在React应用程序中使用CKEditor将用户内容保存到Firebase数据库中。内容按我的需要保存(例如,使用html标记使用数据库中的html标记打印文本-Javascript,javascript,html,reactjs,parsing,decode,Javascript,Html,Reactjs,Parsing,Decode,我正在React应用程序中使用CKEditor将用户内容保存到Firebase数据库中。内容按我的需要保存(例如,使用html标记 “内容嘿嘿\n” )但是当我想要获取数据时,问题就出现了 作为fetch的一个结果,比如说,我用html标记获取文本,而不是将其“转换”为粗体或斜体 当我进入Chrome控制台并检查element时,我看到如下内容: <td><p>I am&nbsp;<strong>testing&
“内容嘿嘿\n”
)但是当我想要获取数据时,问题就出现了
作为fetch的一个结果,比如说,我用html标记获取文本,而不是将其“转换”为粗体或斜体
当我进入Chrome控制台并检查element时,我看到如下内容:
<td><p>I am&nbsp;<strong>testing&nbsp;</strong><em>text</em></p>
var text = '<p>name</p><p><span style="font-size:xx-small;">ajde</span></p><p><em>da</em></p>';
var decoded = $('<textarea/>').html(text).text();
alert(decoded);
pI-am&;nbsp;strong测试与测试;nbsp/strongemtext/em/p
问题是我以前在Laravel或Symphony中使用过“原始”db输入,但我不知道如何在javascript中使用它。我试着在google和stack中寻找它,但说实话,我失败了,因为我甚至不知道到底是什么问题,因为“用javascript从db中获取原始数据”并没有像我想象的那样工作
提前谢谢你的建议
另外,我知道Jquery中有这样的东西:
<td><p>I am&nbsp;<strong>testing&nbsp;</strong><em>text</em></p>
var text = '<p>name</p><p><span style="font-size:xx-small;">ajde</span></p><p><em>da</em></p>';
var decoded = $('<textarea/>').html(text).text();
alert(decoded);
var text='pname/ppspan style=“font-size:xx-small;”ajde/span/ppemda/em/p';
var decoded=$('').html(text.text();
警报(解码);
但我不知道如何用纯javascript(或ES6)编写此代码。您可以使用RegExp替换:
var text = '<p>I am&nbsp;<strong>testing&nbsp;</strong><em>text</em></p>';
var decoded = text.replace(/"&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, "\"");
var text='pI am&;nbsp;strong测试与测试;nbsp/strongemtext/em/p';
var decoded=text.replace(/“&;/g,”&”).replace(//g,“>”).replace(//g,“可能(没有代码示例,我真的不知道)发生的原因不是来自获取,而是来自呈现
默认情况下,react在呈现组件时转义html标记
要避免转义和设置组件的html,请使用危险的html(
).好的,所以在我问这个问题之前,我花了整整一个晚上来解决这个问题,就在我问了这个问题之后,我设法解决了这个问题
我从npm包安装了“he”库(npm安装he)
我安装了“html反应解析器”(npm安装html反应解析器)
第一个用于从数据库解码html,第二个用于将html写入jsx元素
例如:
let text = he.decode(props.tdData[item]);
return (<td>{Parser(text)}</td>);
let text=he.decode(props.tdData[item]);
返回({Parser(text)});
这两个库为我做这件事,它的工作就像我想要的
感谢您的任何意见,案件已经结案:)我读到了《危险…》一书,很多人都声称这很危险。他们建议改用“html反应解析器”。为了解码存储在db中的html,我使用了“he”库,这也是非常好和简单的。我将在5-10分钟内发布我所做的事情。但是谢谢你的建议!不客气。当然,根据文档,它可能会暴露安全风险,这取决于您执行获取部分的方式以及数据库的填充方式。应避免IMHO xss在db中的内容以及js如何与db对话方面的风险。当然,您的最终解决方案更安全,但它仍然解码并解析回根据服务器端检查(在这个特定场景中)应该“已经准备好”用于dom的内容。我在CMS系统中使用ckeditor,我甚至不想这样“解码”。我的意思是我需要“替换”存在于CKEditor中的每个标记,对吗?还是我错了?是的,没错。事实上,这是一个较长的版本,但我尝试过的版本。你可以制作一个等价对的映射,并从一个函数中创建regexp,该函数将接受匹配对(仍然需要映射所有符号)是的,这可能会很痛苦:D谢天谢地,有一个“他”库为我做了这件事:)酷,很高兴你找到了解决方案:D干杯