IOS中过滤HTML标签&&WebView的三种常用的使用方法

来源:互联网 发布:java电商高并发视频 编辑:程序博客网 时间:2024/05/16 04:58

- (void)dooo

{

        NSString * str=@"<p style=\"text-align: center;\"><img style=\"width:94%;height:auto\" src=\"http://p1.img.cctvpic.com/photoworkspace/contentimg/2014/01/13/2014011318535072073.jpg\" alt=\"AC米兰官方宣布阿莱格里下课\" width=\"500\"/></p><p style=\"text-align: center;\"><span style=\"color: #0000ff;\"><strong>AC米兰官方宣布阿莱格里下课</strong></span></p><p><span style=\"color: #000000;\">  北京时间113日晚6时,意甲AC米兰俱乐部官方宣布主帅阿莱格里下课。昨天的意甲第19轮比赛中,AC米兰客场34不敌升班马萨索洛,比赛结束之后就传出了阿莱格里将会被解雇的消息。</span></p><p><span style=\"color: #000000;\">  米兰的官方公告中写道:阿莱格里先生和他的助手们将不再担任球队一线队教练的工作,对此我们非常遗憾,感谢阿莱格里和他的团队几年来为俱乐部做出的贡献,祝愿他在未来的工作中继续取得成功。”<span style=\"font-size: 14px;\">此前意大利方面的消息都是在阿莱格里下课后,前米兰球星因扎吉将暂时接手球队,不过米兰官方公告中称球队的训练和比赛任务暂时由助理教练毛罗-塔索蒂负责。</span></span></p><p><span style=\"color: #000000;\">  <span style=\"font-size: 14px;\">阿莱格里在2010年世界杯后上任成为AC米兰队主教练,带队第一个赛季就帮助米兰七年后重夺意甲联赛冠军,随后又率队在北京击败国米夺得意大利超级杯,第二个赛季米兰战绩同样不错,可惜在关键一战中因为裁判的误判失去了一个重要进球,米兰在联赛冠军的争夺中输给了尤文图斯,后面两个赛季米兰阵容人员不整,不过阿莱格里还是率队赢得了上赛季的第三名,从而获得本赛季欧冠参赛资格。新赛季米兰战绩比上赛季还差,主帅阿莱格里终于被解职。</span></span></p>";

    

    


    

   // [self flattenHTML:str];

    [selfremoveHTML2:str];

    

}


//法1

- (NSString *)flattenHTML:(NSString *)html {

    

   NSScanner *theScanner;

   NSString *text =nil;

    

    theScanner = [NSScannerscannerWithString:html];

    

   while ([theScannerisAtEnd] ==NO) {

        // find start of tag

        [theScannerscanUpToString:@"<"intoString:NULL] ;

        // find end of tag

        [theScannerscanUpToString:@">"intoString:&text] ;

        

        // replace the found tag with a space

        //(you can filter multi-spaces out later if you wish)

        html = [html stringByReplacingOccurrencesOfString:

                [NSStringstringWithFormat:@"%@>", text]

                                              withString:@""];

    } // while //

    

    NSLog(@"-----===%@",html);

   return html;

}


//法2

- (NSString *)removeHTML2:(NSString *)html{

    

    NSArray *components = [htmlcomponentsSeparatedByCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@"<>"]];

    

    

    

   NSMutableArray *componentsToKeep = [NSMutableArrayarray];

    

   for (int i =0; i < [componentscount]; i = i + 2) {

        

        [componentsToKeepaddObject:[componentsobjectAtIndex:i]];

        

    }

    

    

    

   NSString *plainText = [componentsToKeepcomponentsJoinedByString:@""];

    

   NSLog(@"---%@",plainText);

   return plainText; 

    

}





webView的三种方法

一、使用UIWebView 将web content 嵌入到应用上。

API提供了三种方法:

  1. - (void)loadRequest:(NSURLRequest *)request;
  2. - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
  3. - (void)loadData:(NSData *)data MIMEType:(NSString *)
  4. MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;

1、直接给出url地址即可将web content载入。

  1. NSString *path = @"http://theo2life.com";
  2. NSURL *url = [[NSURL alloc] initWithString:path];
  3. [self.webView loadRequest:[NSURLRequest requestWithURL:url]];

2、将本地html文件内容嵌入webView

  1. NSString *resourcePath = [ [NSBundle mainBundle] resourcePath];
  2. NSString *filePath = [resourcePath stringByAppendingPathComponent:@"test.html"];
  3. NSString *htmlstring =[[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
  4. [self.webView loadHTMLString:htmlstring baseURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]]];

如果不从html文件载入你也可以这样:

  1. NSString *HTMLData = @"<img src=\"test2.png\" />ddd";
  2. [self.webView loadHTMLString:HTMLData baseURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]]];
  3. baseURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]]

这段指出HTMLData所引用的其他文件资源的基本路径,如果baseURL:nil图片信息将不会显示出来~

3、同2,更详细的给出了web content的编码方式。

二、其他操作:

如果载入的web布局大过ipad尺寸发现超出的部分会是空白,则设置webView.scalesPageToFit = YES;让web content布局适应webView。


0 0