2011-02-10 10 views
2

どのようにしてサブドメインなしでNSURLのホストを取得できますかサブドメインを持たないNSURLのホスト

ここにいくつかの入力があります。残るべき
部分は太字であり、そして何剥奪すべきはイタリック体である:

server.com
WWW。server.com
media。server.com
host1.mediaserver.com

はこれまでのところ、実装が非常に簡単に聞こえます。
しかし、それは以下の入力だけでなく、私が考えていなかった奇妙なケースも正しく処理し、関連するRFCで一般に受け入れられているか指定されているはずです。

server.co.uk
メディア。server.co.uk
127.0.0.1
...

答えて

0

これは難しい質問に答えていませんが、あなたは(私はこの質問を見つけたとき、私はだったように)特定のドメインのホワイトリストにURLを一致しているかどうかをチェックするために、このようなコードを使用することができます:

NSArray *domainsForVideo = @[@"youtube.com", 
          @"youtu.be", 
          @"videoschool.pvt.k12.md.us", 
          @"vimeo.com"]; 

NSString *host = [url host]; //where URL is some NSURL object 

BOOL hostMatches = NO; 

for (NSString *testHost in domainsForVideo) { 
    if ([[host lowercaseString] isEqualToString:testHost]) hostMatches = YES; // matches youtube.com exectly 

    NSString *testSubdomain = [NSString stringWithFormat:@".%@",testHost]; // matches www.youtube.com but not fakeyoutube.com 
    if ([[host lowercaseString] rangeOfString:testSubdomain].location != NSNotFound) hostMatches = YES; 
} 

if (hostMatches) { 
    // this is a Video URL 
} 
関連する問題