URL からのドメイン名の抽出
この質問は、URL からドメイン名を効果的に抽出することを目的としています。提供された Java コードは適切に機能しているように見えますが、作成者は、その信頼性を損なう可能性のある優れた技術や潜在的なエッジ ケースについて問い合わせています。
java.net.URI を使用した代替実装
URL を解析するには、java.net.URL の代わりに java.net.URI クラスを利用する、よりクリーンなアプローチをお勧めします。後者には、問題のあるequalsメソッドなどの既知の問題があり、信頼できない入力が関係するシナリオでコードが脆弱になる可能性があります。
public static String getDomainName(String url) throws URISyntaxException { URI uri = new URI(url); String domain = uri.getHost(); return domain.startsWith("www.") ? domain.substring(4) : domain; }
この改良されたメソッドは、大文字と小文字が正しくない、または大文字と小文字が区別されるエッジケースを処理しながら、ドメイン名を効果的に取得します。 「www」プレフィックスのバリエーション。
考慮すべき追加のエッジケース
元のコードは特定の URL 形式を考慮していない:
これらの特殊なケースに対処するには、URI 参照を解析して個々のコンポーネントに分割するための包括的な正規表現を提供する RFC 3986 の付録 B を参照することを検討してください。
以上がURL からドメイン名を確実に抽出する方法: 代替技術とエッジケースの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。