29,049
社区成员




- (void) getImageUrlArray:(NSString*) content
{
DDLOG_CURRENT_METHOD;
NSString *urlPattern = @"<img[^>]+?src=[\"']?([^>'\"]+)[\"']?";
NSError *error = [NSError new];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:urlPattern options:NSRegularExpressionCaseInsensitive error:&error ];
//match 这块内容非常强大
NSUInteger count =[regex numberOfMatchesInString:content options:NSRegularExpressionCaseInsensitive range:NSMakeRange(0, [content length])];//匹配到的次数
if(count > 0){
NSArray* matches = [regex matchesInString:content options:NSMatchingReportCompletion range:NSMakeRange(0, [content length])];
for (NSTextCheckingResult *match in matches) {
NSInteger count = [match numberOfRanges];//匹配项
for(NSInteger index = 0;index < count;index++){
NSRange halfRange = [match rangeAtIndex:index];
if (index == 1) {
[listImage addObject:[content substringWithRange:halfRange]];
}
}
}//遍历后可以看到三个range,1、为整体。2、为([\\w-]+\\.)匹配到的内容。3、(/?[\\w./?%&=-]*)匹配到的内容
}
}
//获取web里的所有的img url
- (NSString *)createImgArrayJavaScript{
NSString *js = @"var imgArray = document.getElementsByTagName('img'); var imgstr = ''; function f(){ for(var i = 0; i < imgArray.length; i++){ imgstr += imgArray[i].src;imgstr += ';';} return imgstr; } f();";
return js;
}
//返回web img图片的数量
- (NSString *)createGetImgNumJavaScript{
NSString *js = @"var imgArray = document.getElementsByTagName('img');function f(){ var num=imgArray.length;return num;} f();";
return js;
}
- (void)downLoadImageFromURL:(NSArray* )imageUrlArray
{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_group_t group = dispatch_group_create();
for (int i = 0; i < imageUrlArray.count; i++)
{
NSString *imageUrl = [imageUrlArray objectAtIndex:i];
NSString *key = [imageUrl MD5Hash];
NSData *data = [FTWCache objectForKey:key];
NSURL *imageURL = [NSURL URLWithString:imageUrl];
NSString *index = [NSString stringWithFormat:@"%d", i];
if (data) {
[_detailWebView stringByEvaluatingJavaScriptFromString:[self createSetImageUrlJavaScript:index
imgUrl:key]];
}else{
dispatch_group_async(group, queue, ^{
NSData *data = [NSData dataWithContentsOfURL:imageURL];
if (data != nil) {
[FTWCache setObject:data forKey:key];
dispatch_sync(dispatch_get_main_queue(), ^{
[_detailWebView stringByEvaluatingJavaScriptFromString:[self createSetImageUrlJavaScript:index
imgUrl:key]];
DDLOG(@"image i %d",i);
});
}
});
}
}
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
//这里是所有图片下载完成后执行的操作。
});
dispatch_release(group);
}
//设置下载完成的图片到web img
- (NSString *)createSetImageUrlJavaScript:(NSString *) index imgUrl:(NSString *) url{
NSData *imageData = [FTWCache objectForKey:url];
UIImage *image = [UIImage imageWithData:imageData];
int imageWidth = 300;
int imageHeight = image.size.height*300.0f/image.size.width;
NSString *js = [NSString stringWithFormat:@"var imgArray = document.getElementsByTagName('img'); imgArray[%@].src=\"%@\"; imgArray[%@].width=\"%d\";imgArray[%@].height=\"%d\" ;" , index, url, index,imageWidth,index,imageHeight];
return js;
}