0

我有这个来自 IB 的接口。正如您在“详细信息”中看到的,UITextfield其中有很多 HTML 代码。

表视图

我后面有一个 PHP 服务器,所以我也可以在后端创建它。执行此操作的最佳方法是什么?

4

3 回答 3

1

您可以使用以下方法将 HTML 转换为字符串:

  NSRange range;
  NSString *string;
  while ((range = [string rangeOfString:@"<[^>]+>" options:NSRegularExpressionSearch]).location != NSNotFound){
    string=[string stringByReplacingCharactersInRange:range withString:@""];
  }
  NSLog(@"Un block string : %@",string);

但是如果您的文本包含一些 <> 它将被删除

于 2013-01-23T10:20:23.817 回答
1

您应该使用解析器来解析 html,即使它只是一个小片段。AKV 建议使用 RegEx,但很难找到正确的 RegEx,另请参见此处。ie<a href="foo" title="5>3">是会混淆 AKV 正则表达式的有效 html。

iOS有一个可以使用的板载C-lib,libXML2,但实际上你应该使用一些包装器,我认为Objective-C-HMTL-Parser既简单又很棒。

你会像这样使用它

HTMLParser *parser = [[HTMLParser alloc] initWithString:html error:&error];
HTMLNode *bodyNode = [parser body];
NSString *string = [bodyNode allContents];

由于 HTMLNode 可以包含其他 HTMLNode 作为子节点,因此您也可以使用该信息进行文本格式化。


如果这是一个选项,还有用于将 HTML 解析为 NSAttributedStrings的出色DTCoreText项目

于 2013-01-23T14:39:47.367 回答
1

将其显示在具有透明背景的 UIWebView 中,这样您的所有 HTML 标记仍然可以正常工作。只需使 UIWebView 与您的 UITextView 大小相同并将其放在同一个位置!

当您将 HTML 字符串加载到 webView 中时,请使用此代码作为透明背景。

finalhtmlstring = [NSString stringWithFormat:@"<html><head></head><body style='background-color:transparent;'>%@</body></html>",htmlstring];
[myWebView loadHTMLString:finalhtmlstring baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];

并确保您(在 xib 文件中)将 webView 的背景本身设置为 0% alpha 并切换“不透明”框...

最后不要忘记在您的 xib 文件中设置委托并将其添加<UIWebViewDelegate>到您的 .h 文件中。

于 2013-01-23T14:50:57.393 回答