在 JSON 中解析 <img src> 标签 - iOS
Posted
技术标签:
【中文标题】在 JSON 中解析 <img src> 标签 - iOS【英文标题】:Parse <img src> tag in JSON - iOS 【发布时间】:2015-05-26 09:25:09 【问题描述】:我有一个下载 JSON 提要的 ios 应用。除了剩下的一个元素(图像)之外,我已经成功地解析了所有内容。
我正在下载的 JSON 提要来自在线 php 脚本,该脚本将某些 RSS 提要转换为 JSON。因此,为什么在包含图像的 JSON 提要的元素之一中有 html
图像标签。
我正在使用以下代码来访问诸如标题、日期、链接 URL 等内容...而且效果很好:
NSArray *titles = [[[[data_dict objectForKey:@"rss"] valueForKey:@"channel"] valueForKey:@"item"] valueForKey:@"title"];
从我上面的代码中可以看出,标题存储在名为“title”的 JSON 标记中。非常容易解析。图片存储在一个名为“description”的标签中。
此标记如何还包含文本和图像 URL。那么如何从中解析<img src>
标签呢?
这是 JSON 描述标签之一:
如何解析数组中的图片链接?
感谢您的宝贵时间,丹
【问题讨论】:
您可以使用 NSAttributedString 并阅读 HTML 文本。 【参考方案1】:请尝试以下代码 -
NSString *yourHTMLSourceCodeString = @"";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(<img\\s[\\s\\S]*?src\\s*?=\\s*?['\"](.*?)['\"][\\s\\S]*?>)+?"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex enumerateMatchesInString:yourHTMLSourceCodeString
options:0
range:NSMakeRange(0, [yourHTMLSourceCodeString length])
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
NSString *img = [yourHTMLSourceCodeString substringWithRange:[result rangeAtIndex:2]];
NSURL *candidateURL = [NSURL URLWithString:img];
if (candidateURL && candidateURL.scheme && candidateURL.host)
NSLog(@"img src %@",img);
];
更新 使用下面的正则表达式更改可以完成同样的事情 -
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(<img\\s[\\s\\S]*?src\\s*?=\\s*?['\"]((http|https)://.*?)['\"][\\s\\S]*?>)+?"
options:NSRegularExpressionCaseInsensitive
error:&error];
【讨论】:
好的,这是非常棒的解决方案!只是一个问题,有时在这些提要中,其他随机图像出现在描述标签中,例如以“.img”结尾的图像或在链接末尾甚至没有图像扩展名的图像链接。我怎样才能区分这些链接?我只想显示实际上是网站提要一部分的图像,而不是像“rssbutton.img”这样的随机图像? 您也可以使用正则表达式更改 NSRegularExpression regex = [NSRegularExpression regularExpressionWithPattern:@"(?src\\s *?=\\s*?['\"]((http|https)://.*?)['\"][\\s\\S]*?>)+?" 不,那没用。实际上,我最终在您的代码if (([img containsString:@".jpg"]) || ([img containsString:@".png"]) || ([img containsString:@".jpeg"])) ...
中添加了另一个 if 语句来决定是否使用该图像。感谢您的帮助:)以上是关于在 JSON 中解析 <img src> 标签 - iOS的主要内容,如果未能解决你的问题,请参考以下文章
如何在 <script> 标记中的 html 上使用 json 脚本并在 <img src=???/> 中填充数据
如何在angularjs中上传已经在<img src>中的图像