<meta property="og:image" content="http://kokoga.hosii/address/desu.jpg" />
検索や置換、正規表現などを頑張ってみたのですが、どうにもうまく行きません。
どうぞよろしくお願いします。
コメントでソースが欠けてしまうので再回答させて頂きます。
NSString *string = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://q.hatena.ne.jp/1342645668"] encoding:NSUTF8StringEncoding error:nil]; NSError *error = nil; NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"<meta property=\"og:image\" content=\".+\"" options:0 error:&error]; if (error != nil) { NSLog(@"%@", error); } else { NSTextCheckingResult *match = [regexp firstMatchInString:string options:0 range:NSMakeRange(0, string.length)]; NSRange resultRange = [match rangeAtIndex:0]; NSLog(@"match=%@", [string substringWithRange:resultRange]); NSRange urlRange = NSMakeRange(resultRange.location + 35, resultRange.length - 35 - 1); NSLog(@"url =%@", [string substringWithRange:urlRange]); }
ほかにもっと簡潔なやりかたがあるかもしれませんが、
こんな感じで取得できました。
正規表現で抜いたあと、「content="」と「"」の間を取り出しています
NSString *string = @"<meta property=\"og:image\" content=\"http://kokoga.hosii/address/desu.jpg\" />"; NSError *error = nil; NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"content=\".+\"" options:0 error:&error]; if (error != nil) { NSLog(@"%@", error); } else { NSTextCheckingResult *match = [regexp firstMatchInString:string options:0 range:NSMakeRange(0, string.length)]; NSRange resultRange = [match rangeAtIndex:0]; NSRange urlRange = NSMakeRange(resultRange.location + 9, resultRange.length - 9 - 1); NSLog(@"%@", [string substringWithRange:urlRange]); }
すいません、いま出先なのでエラーメッセージは書き込めないのですが、私の方は最初のMETAタグの取得がうまくいっていません。その部分を教えていただけますでしょうか?よろしくお願いします。
コメントでソースが欠けてしまうので再回答させて頂きます。
コメントでソースが欠けてしまうので再回答させて頂きます。
NSString *string = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://q.hatena.ne.jp/1342645668"] encoding:NSUTF8StringEncoding error:nil]; NSError *error = nil; NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"<meta property=\"og:image\" content=\".+\"" options:0 error:&error]; if (error != nil) { NSLog(@"%@", error); } else { NSTextCheckingResult *match = [regexp firstMatchInString:string options:0 range:NSMakeRange(0, string.length)]; NSRange resultRange = [match rangeAtIndex:0]; NSLog(@"match=%@", [string substringWithRange:resultRange]); NSRange urlRange = NSMakeRange(resultRange.location + 35, resultRange.length - 35 - 1); NSLog(@"url =%@", [string substringWithRange:urlRange]); }
ご丁寧にありがとうございます。あとで使わせて頂きます。取り急ぎ。
ありがとうございます。ほぼ期待通り動いていますが、ときどき下記のようなエラーを出してアプリケーションがクラッシュしてしまいます。例外処理で対応しようと思います。ありがとうございました。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSRegularExpression enumerateMatchesInString:options:range:usingBlock:]: nil argument'
(0x140c022 0x159dcd6 0x13b4a48 0x13b49b9 0xaa6d40 0xaa796a 0x5138 0xf0c54 0xf13ce 0xdccbd 0xeb6f1 0x94d21 0x140de42 0x1dc4679 0x1dce579 0x1d534f7 0x1d553f6 0x1d54ad0 0x13e099e 0x1377640 0x13434c6 0x1342d84 0x1342c9b 0x12f57d8 0x12f588a 0x56626 0x1d5d 0x1cc5 0x1)
terminate called throwing an exception
ご丁寧にありがとうございます。あとで使わせて頂きます。取り急ぎ。
2012/07/19 14:01:32ありがとうございます。ほぼ期待通り動いていますが、ときどき下記のようなエラーを出してアプリケーションがクラッシュしてしまいます。例外処理で対応しようと思います。ありがとうございました。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSRegularExpression enumerateMatchesInString:options:range:usingBlock:]: nil argument'
First throw call stack:
(0x140c022 0x159dcd6 0x13b4a48 0x13b49b9 0xaa6d40 0xaa796a 0x5138 0xf0c54 0xf13ce 0xdccbd 0xeb6f1 0x94d21 0x140de42 0x1dc4679 0x1dce579 0x1d534f7 0x1d553f6 0x1d54ad0 0x13e099e 0x1377640 0x13434c6 0x1342d84 0x1342c9b 0x12f57d8 0x12f588a 0x56626 0x1d5d 0x1cc5 0x1)
2012/07/20 17:01:38terminate called throwing an exception