在javascript中编码html实体

我在允许用户输入内容的CMS中工作。问题在于,当他们添加符号时®,它可能无法在所有浏览器中正常显示。我想设置一个必须搜索的符号列表,然后将其转换为相应的html实体。例如

®=> ®

&=> &

©=> ©

™=>™

转换后,需要将其包装在<sup>标签中,从而导致:

® => <sup>&reg;</sup>

由于必须使用特定的字体大小和填充样式:

sup { font-size: 0.6em; padding-top: 0.2em; }

JavaScript会是这样吗?

var regs = document.querySelectorAll('®');

for ( var i = 0, l = imgs.length; i < l; ++i ) {

var [?] = regs[i];

var [?] = document.createElement('sup');

img.parentNode.insertBefore([?]);

div.appendChild([?]);

}

“ [?]”的意思是说我不确定。

  • 我想使用纯JavaScript来做到这一点,而不是需要像jQuery这样的库的东西,谢谢。
  • 后端是Ruby
  • 使用Ruby on Rails构建的RefineryCMS

回答:

您可以使用regex将给定unicode范围内的任何字符替换为其html实体等效项。代码看起来像这样:

var encodedStr = rawStr.replace(/[\u00A0-\u9999<>\&]/gim, function(i) {

return '&#'+i.charCodeAt(0)+';';

});

此代码将用其html实体等效项替换给定范围内的所有字符(unicode00A0-9999,以及&符,大于和小于),这就是我们从中获得的unicode值&#nnn;在哪里。nnn``charCodeAt

在此处查看其运行情况:(此示例在示例中使用jQuery作为元素选择器。上面的基本代码本身未使用jQuery)

进行这些转换并不能解决所有问题-请确保您使用的是UTF8字符编码,请确保您的数据库将字符串存储在UTF8中。根据系统字体配置和您无法控制的其他问题,您仍然可能会看到字符无法正确显示的情况。

以上是 在javascript中编码html实体 的全部内容, 来源链接: utcz.com/qa/427155.html

回到顶部