js转换 < >‘ ” &

JerryXia 发表于 , 阅读 (6,696)

js 转换 < >' " & ,转换为:> &,该如何转化呢?

php 的 replace 可以支持数组替换,但是javascript 不支持,假如一定要用 js 转换

我先想到了以下第一种方法:

html.replace(/&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/'/g, "'").replace(/"/g, """);
这个方法,缺点还是很明显,要遍历 字符串 5次,而且 这样编写代码,感觉很猥琐 ^_^

我想了好半天,也没好方法,搜索了一下,大家都这样。于是我去查了一下 ECMA-262 ,发现 一种好办法了。

i1
i2

看见了没,replaceValue 可以是函数啊。于是就可以:

var letter = {
  '&' : '&amp;',
  '>' : '&gt;',
  '<' : '&lt;',
  '"' : '&quot;',
  "'" : '&#39;'
};
return html.replace(/<|>|'|"|&/g,function($0){
  return letter[$0];
})

而且,这样编写代码,也比较科学。

在php里面的 str_replace , 两个参数都可以是 array ,比较方便;但是js 不支持直接数组,通过 function 基本可以模拟了。这个方案,其实就是在模拟 类似 php 的数组替换了。

添加新评论