工作中需要识别微信分享的链接中的一些信息显示在app中,效果类似于QQ的效果
当前的显示分为三个部分组成,分别为标题,文章描述以及图片,所以我们需要根据给定的链接将这三个元素提取出来
首先我们在浏览器中打开这个链接,然后按F12并将其中的html内容拷贝出来,发现所有的微信分享的链接都会在指定的地方存储这三个信息
所以我们需要做的就是根据url识别出是微信分享的url,然后去获取url中的内容,将三个元素取出即可
- (NSArray*)parseWeiXinShareInfoWithUrl:(NSString*)url
{
NSString* htmlString = [NSString stringWithContentsOfURL:[NSURL URLWithString:url] encoding:NSUTF8StringEncoding error:nil];
if (nil == htmlString)
{
return nil;
}
NSString* regFormat = @"(?<=var %@ = \").*(?=\";)";
NSString* titleReg = [NSString stringWithFormat:regFormat, @"msg_title"];
NSString* descReg = [NSString stringWithFormat:regFormat, @"msg_desc"];
NSString* imgUrlReg = [NSString stringWithFormat:regFormat, @"msg_cdn_url"];
BOOL isFailed = NO;
NSMutableArray* resultArr = [NSMutableArray array];
NSArray* regList = @[titleReg, descReg, imgUrlReg];
for (NSString* regStr in regList)
{
NSRegularExpression* reg = [[NSRegularExpression alloc] initWithPattern:regStr options:NSRegularExpressionCaseInsensitive error:nil];
NSArray* results = [reg matchesInString:htmlString options:0 range:NSMakeRange(0, [htmlString length])];
if (0 == results.count)
{
isFailed = YES;
break;
}
NSRange range = [results[0] rangeAtIndex:0];
[resultArr addObject:[htmlString substringWithRange:range]];
}
return isFailed ? nil : resultArr;
}
此时三个元素已经全部取出,我们只需要根据自己的需求将信息进行展示即可