【发布时间】:2011-05-12 05:14:13
【问题描述】:
我正在寻找一个包含 html 字符实体(例如   等)的字符串,并将它们替换为文字字符串字符。我通过 twitter 的 api 获取数据,文本包含这些实体。有人知道这样做的现有图书馆吗?
感谢您的帮助!
【问题讨论】:
-
您是否会考虑更改接受的答案(这是一个已弃用的库,会遗漏许多实体)?
标签: html parsing haskell html-parsing
我正在寻找一个包含 html 字符实体(例如   等)的字符串,并将它们替换为文字字符串字符。我通过 twitter 的 api 获取数据,文本包含这些实体。有人知道这样做的现有图书馆吗?
感谢您的帮助!
【问题讨论】:
标签: html parsing haskell html-parsing
hackage 上的 Web.Encodings 包看起来很有前景(decodeHtml 函数):
http://hackage.haskell.org/packages/archive/web-encodings/0.3.0.2/doc/html/Web-Encodings.html
【讨论】:
haskell-beginners mailing list 上看到a message,询问它被弃用的原因是什么。它提到了Text.XML.decodeHtmlEntities 例程,它是xml-conduit 包的一部分。虽然说它不起作用,但它应该可以处理基本的实体解码。
我使用包tagsoup 中的函数构建了以下函数。它处理来自 HTML5 标准的所有命名和数字实体(超过 2000 个,see the list)。
import qualified Text.HTML.TagSoup as TS
decodeHTMLentities :: (StringLike str, Show str) => str -> str
decodeHTMLentities s = TS.fromTagText $ head $ TS.parseTags s
StringLike 具有 String、Lazy 和 Strict ByteString 和 Text 的实例。
未知实体将保持不变。如果您想要关于未知实体的警告,请使用:
> parseTagsOptions parseOptions{optTagWarning=True} "&asdasd;"
[TagText "&asdasd;",TagWarning "Unknown entity: asdasd"]
【讨论】:
你好,试试下面的代码就可以了
labelTR = labelTR.replace(/(?: |")/g,'');
【讨论】: