2

サブドメインなしで NSURL のホストを取得するにはどうすればよいですか?

ここにいくつかの入力があります。
残すべき部分は太字で、削除すべき部分はイタリック体で示しています。

server.com
www. server.com
メディア。server.com
host1.media. server.com

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

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

4

2 に答える 2

3

ホスト名からドメイン名を抽出するを参照してください。この問題には簡単な解決策がないようです。

于 2011-02-10T13:55:50.083 に答える
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
}
于 2013-01-09T21:32:40.600 に答える