我有一个下载JSON Feed的iOS应用。除了剩下的一个元素之外,我已经设法解析了所有内容,这就是图像。
我正在下载的JSON提要是来自在线的PHP脚本,它将某些RSS提要转换为JSON。因此,为什么在包含图像的JSON Feed的其中一个元素中有HTML
个图像标记。
我正在使用以下代码来访问标题,日期,链接网址等内容......而且效果很好:
NSArray *titles = [[[[data_dict objectForKey:@"rss"] valueForKey:@"channel"] valueForKey:@"item"] valueForKey:@"title"];
从上面的代码中可以看出,标题存储在名为" title"的JSON标记中。很容易解析。图像存储在名为" description"。
的标签中此标记如何包含文本和图像URL。那么如何从中解析<img src>
标签呢?
以下是JSON描述标记之一:
如何解析数组中的图像链接?
谢谢你的时间,Dan
答案 0 :(得分: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];