我有一个字符串可以包含这样的html:
Hello my name is <a href='...'>felipe</a> and I've one brother
我只需要scape html之外的引号。所以结果将是
Hello my name is <a href='...'>felipe</a> and I\'ve one brother
有什么想法吗?宝石?
答案 0 :(得分:0)
如果您获得一串“自由文本HTML”,这将很难做到,因为基本上必须解析它。
大多数模板语言都提供了一些区分“原始HTML”和“要转义的字符串内容”的方法。这通常是您应该解决此问题的地方,那么您对模板使用的是什么?
答案 1 :(得分:0)
这是一个基本的正则表达式,你可以用来匹配html元素标签之外的单引号...我没有彻底测试它,但它匹配你的输入字符串以及我尝试过的其他一些变体。< / p>
'(?![^<]*>)
它基本上只匹配单引号后面没有'&gt;'除非有'&lt;'在'&gt;'
前面以下是替换的结果:
your_string.gsub(/'(?![^<]*>)/, "\\\\'")
由于gsub如何解析替换字符串,您必须使用替换字符串中的所有反斜杠。
答案 2 :(得分:-1)
通过这个问题,我了解到无法用正则表达式解析html字符串。 Ruby有非常好的html解析器,比如 Nokogiri ,我用来解决我的问题
这个问题对此有一个很好的解释。