欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS实现去除html标签的方法汇总

程序员文章站 2023-12-20 15:50:40
前言 我们在一些开发中,很有必要过滤掉用户输入的文本中的html标签以防范xss攻击,本文将详细介绍关于ios去除html标签的相关内容,分享出来供大家参考学习,下面话不...

前言

我们在一些开发中,很有必要过滤掉用户输入的文本中的html标签以防范xss攻击,本文将详细介绍关于ios去除html标签的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

请求接口返回的数据里包含html标签,oc中去掉的方法之前做过,代码如下

-(nsstring *)filterhtml:(nsstring *)html{
  nsscanner * scanner = [nsscanner scannerwithstring:html];
  nsstring * text = nil;
  while([scanner isatend]==no)
  {
    [scanner scanuptostring:@"<" intostring:nil];
    [scanner scanuptostring:@">" intostring:&text];
    html = [html stringbyreplacingoccurrencesofstring:[nsstring stringwithformat:@"%@>",text] withstring:@""];
  }
  return html;
}

也可以使用正则去掉

-(nsstring *)getzzwithstring:(nsstring *)string{
 nsregularexpression *regularexpretion=[nsregularexpression regularexpressionwithpattern:@"<[^>]*>|\n"
                                         options:0
                                          error:nil];
 string=[regularexpretion stringbyreplacingmatchesinstring:string options:nsmatchingreportprogress range:nsmakerange(0, string.length) withtemplate:@""];
 return string;
}

还可以转换为富文本

+ (nsmutableattributedstring *)prasehtmlstr:(nsstring *)htmlstr {
  nsmutableattributedstring *attributedstring = [[nsmutableattributedstring alloc] initwithdata:[htmlstr datausingencoding:nsunicodestringencoding] options:@{nsdocumenttypedocumentattribute: nshtmltextdocumenttype,nscharacterencodingdocumentattribute :@(nsutf8stringencoding)} documentattributes:nil error:nil];
  [attributedstring addattribute:nsfontattributename value:[uifont systemfontofsize:13] range:nsmakerange(0, attributedstring.length)];
  [attributedstring addattribute:nsforegroundcolorattributename value:commoncolor(color333333) range:nsmakerange(0, attributedstring.length)];
 
  return attributedstring;
}

但是这次使用的是swift,来看我收集的几种方法,其实都差不多

func removehtml(htmlstring : string)->string{
    return htmlstring.replacingoccurrences(of: "<[^>]+>", with: "", options: .regularexpression, range: nil)
}
 
extension string {
  func deletehtmltag(tag:string) -> string {
    return self.replacingoccurrences(of: "(?i)</?\(tag)\\b[^<]*>", with: "", options: .regularexpression, range: nil)
  }
  
  func deletehtmltags(tags:[string]) -> string {
    var mutablestring = self
    for tag in tags {
      mutablestring = mutablestring.deletehtmltag(tag: tag)
    }
    return mutablestring
  }
  
  ///去掉字符串标签
  mutating func filterhtml() -> string?{
    let scanner = scanner(string: self)
    var text: nsstring?
    while !scanner.isatend {
      scanner.scanupto("<", into: nil)
      scanner.scanupto(">", into: &text)
      self = self.replacingoccurrences(of: "\(text == nil ? "" : text!)>", with: "")
    }
    return self
  }
}

总结

以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

上一篇:

下一篇: