從 URL 中提取網域名稱
本題旨在有效地從 URL 中提取網域名稱。雖然提供的 Java 程式碼似乎運行合理,但作者詢問了任何可能損害其可靠性的高級技術或潛在的邊緣情況。
使用java.net.URI 的替代實作
建議使用更簡潔的URL 解析方法,即使用java.net.URI 類別而不是java.net. URL。後者存在已知問題,例如其有問題的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 格式:
要解決這些邊緣情況,請考慮參考RFC 3986 的附錄B,它提供了一個全面的正則表達式,用於解析URI 引用並將它們分解為單獨的組件。
以上是如何可靠地從 URL 中提取網域:替代技術和邊緣情況的詳細內容。更多資訊請關注PHP中文網其他相關文章!