Google Apps脚本中的html编码问题

时间:2012-11-08 12:14:26

标签: google-apps-script

我需要将HTML实体字符转换为它们的unicode版本。例如,当我有&amp时,我只想&。是否有特殊功能,或者我必须为replace()< - >的每一对使用函数HTML Entity character吗? Unicode character

提前致谢。

2 个答案:

答案 0 :(得分:9)

即使Apps Script中没有DOM,您也可以解析HTML并以这种方式获取纯文本:

function getTextFromHtml(html) {
  return getTextFromNode(Xml.parse(html, true).getElement());
}

function getTextFromNode(x) {
  switch(x.toString()) {
    case 'XmlText': return x.toXmlString();
    case 'XmlElement': return x.getNodes().map(getTextFromNode).join('');
    default: return '';
  }
}

调用

getTextFromHtml("hello <div>foo</div>&amp; world <br /><div>bar</div>!");

将返回

“你好foo&amp; world bar!”。

为了解释,第二个参数为“true”的Xml.parse将文档解析为HTML页面。然后我们遍历文档(将修补缺少的HTML和BODY元素等,并转换为有效的XHTML页面),将文本节点转换为文本并扩展所有其他节点。

答案 1 :(得分:0)

在Javascript中,(我假设你正在使用它),没有内置函数,但你可以将内容分配给html标签,然后读出文本。这是jQuery的一个例子:

function htmlDecode(value){ 
  return $('<div/>').html(value).text(); 
}

请注意,标记不需要实际附加到DOM。这只是创建一个新标签,读出其内容,然后扔掉它。你可以在vanilla Javascript中完成一些非常类似的东西,只需几行。