Tôi cần một hàm php sản xuất tên miền thuần túy từ URL. Vì vậy, chức năng này phải được loại bỏ http://
, www
và /
(cắt giảm) các phần từ URL nếu các phần này tồn tại. Dưới đây là ví dụ về đầu vào và đầu ra: Đầu vào ->http://www.google.com/ | Đầu ra -> google.com
Nhập ->http://google.com/ | Đầu ra -> google.com
Nhập -> www.google.com/ | Đầu ra -> google.com
Nhập -> google.com/ | Đầu ra -> google.com
Nhập -> google.com | Đầu ra -> google.com
Tôi đã kiểm tra chức năng parse_url
, nhưng không trả lại những gì tôi cần. Vì tôi là người mới bắt đầu trong PHP, điều đó thật khó khăn đối với tôi. Nếu bạn có bất kỳ ý tưởng, xin vui lòng trả lời.
Thanx trước.Làm thế nào để loại bỏ http: //, www và cắt giảm từ URL trong PHP?
Trả lời
$input = 'www.google.co.uk/';
// in case scheme relative URI is passed, e.g., //www.google.com/
$input = trim($input, '/');
// If scheme not included, prepend it
if (!preg_match('#^http(s)?://#', $input)) {
$input = 'http://' . $input;
}
$urlParts = parse_url($input);
// remove www
$domain = preg_replace('/^www\./', '', $urlParts['host']);
echo $domain;
// output: google.co.uk
Hoạt động chính xác với tất cả các mục nhập mẫu của bạn.
và điều gì sẽ xảy ra nếu không phải www nhưng secure.google.com? – Gordon
Yeap, đó là những gì tôi cần. Cảm ơn rất nhiều! – JohnUS
@Gordon: Câu hỏi đã nêu 'phải xóa http: //, www và /'. Các tên miền phụ tùy ý không phải là một phần của nó và sẽ không hoạt động nếu anh ta cần nó. – webbiedave
Sử dụng parse_url
Hãy thử điều này, nó sẽ loại bỏ những gì bạn muốn (http :: //, www và trailing slash) nhưng sẽ giữ lại các tên miền phụ khác như example.google.com
$host = parse_url('http://www.google.com', PHP_URL_HOST);
$host = preg_replace('/^(www\.)/i', '', $host);
và điều gì sẽ xảy ra nếu không phải www nhưng secure.google.com? – Gordon
OP được yêu cầu cụ thể để có http: //, www và dấu gạch chéo bị xóa, do đó giải pháp của tôi chỉ loại bỏ chúng. Các giải pháp khác có thể phức tạp hơn nhiều và có thể sẽ cần một cơ sở dữ liệu về ngoại lệ, các miền .uk, .tw sẽ là ví dụ gây ra sự cố. – h00ligan
if (!preg_match('/^http(s)?:\/\//', $url))
$url = 'http://' . $url;
$host = parse_url($url, PHP_URL_HOST);
$host = explode('.', strrev($host));
$host = strrev($host[1]) . '.' strrev($host[0]);
này sẽ quay trở lại miền cấp thứ hai, mặc dù nó sẽ là vô ích cho các tên miền .com nói, vì vậy bạn có thể muốn làm một số kiểm tra hơn, và bao gồm các phần bổ sung nếu strrev ($ host [0]) là uk, au, v.v.
Có rất nhiều cách lấy miền ra khỏi url tôi đã đăng 4 cách dưới đây bắt đầu từ ngắn nhất đến dài nhất.
# 1
function urlToDomain($url) {
return implode(array_slice(explode('/', preg_replace('/https?:\/\/(www\.)?/', '', $url)), 0, 1));
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
# 2
function urlToDomain($url) {
$domain = explode('/', preg_replace('/https?:\/\/(www\.)?/', '', $url));
return $domain['0'];
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
# 3
function urlToDomain($url) {
$domain = preg_replace('/https?:\/\/(www\.)?/', '', $url);
if (strpos($domain, '/') !== false) {
$explode = explode('/', $domain);
$domain = $explode['0'];
}
return $domain;
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
# 4
function urlToDomain($url) {
if (substr($url, 0, 8) == 'https://') {
$url = substr($url, 8);
}
if (substr($url, 0, 7) == 'http://') {
$url = substr($url, 7);
}
if (substr($url, 0, 4) == 'www.') {
$url = substr($url, 4);
}
if (strpos($url, '/') !== false) {
$explode = explode('/', $url);
$url = $explode['0'];
}
return $url;
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
Tất cả các chức năng trên trả lại phản ứng như nhau: example.com
$str = 'http://www.google.com/';
$str = preg_replace('#^https?://#', '', rtrim($str,'/'));
echo $str; // www.google.com
- 1. Xóa URL Prefix từ String (http: /, www, vv)
- 2. Redirect Non-WWW để WWW URL
- 3. Xóa "www", "http: //" khỏi chuỗi
- 4. PHP: loại bỏ `http: //` từ tiêu đề liên kết
- 5. Làm cách nào để xóa WWW khỏi url bằng mod_rewrite?
- 6. Http POST giảm cổng trong URL
- 7. Làm thế nào để loại bỏ văn bản giữa các thẻ trong php?
- 8. Làm thế nào để loại bỏ một chuỗi truy vấn từ URL sử dụng Python
- 9. làm thế nào để loại bỏ tên thư mục từ url bằng htaccess
- 10. Làm thế nào để loại bỏ index.php từ URL khung mỏng
- 11. "URL có WWW và URL không có WWW" -Có sự khác biệt nào giữa chúng không?
- 12. Làm thế nào để loại bỏ tên máy từ chuỗi bằng cách sử dụng PHP?
- 13. làm thế nào để giảm/loại bỏ lề trái/phải trong một UITableView được nhóm?
- 14. Làm thế nào để loại bỏ các giá trị rỗng từ mảng đa chiều trong PHP?
- 15. Làm thế nào để loại bỏ các dấu ngoặc từ chuỗi trong php?
- 16. Làm thế nào để kiểm tra xem url trang có www trong nó hay không với PHP?
- 17. với $ location.search(): làm thế nào để loại bỏ một số từ url khi nó rỗng
- 18. Làm thế nào để loại bỏ AspxAutoDetectCookieSupport
- 19. Làm thế nào để loại bỏ các định danh ngôn ngữ từ django-cms 2.4 URL?
- 20. Chuyển hướng https tới không www và http đến www
- 21. Làm thế nào để cắt ngắn chuỗi UTF8 trong PHP?
- 22. Làm thế nào để loại bỏ mã php từ một chuỗi?
- 23. Làm thế nào để vô hiệu hóa cú pháp lệnh cắt giảm trong Doxygen
- 24. C# Absolute URI loại bỏ ".." từ URL
- 25. Làm thế nào để loại bỏ Fragment từ FragmentPagerAdapter?
- 26. Ký tự này là gì (Â) và làm thế nào để loại bỏ nó bằng PHP?
- 27. Làm thế nào để loại bỏ một phần của URl với .htaccess?
- 28. Làm thế nào để loại bỏ System.out.println's từ codebase
- 29. .htaccess redirect cả http: // có và không có www và https: // www https: // www phi
- 30. Làm thế nào để loại bỏ 0 từ một chuỗi
Đây là một bản sao của hàng chục câu hỏi. – tplaner
parse_url sẽ giữ nguyên tên miền đầy đủ, bao gồm tên miền phụ, ví dụ: nó không biến www.google.com thành chỉ google.com – Gordon
Câu trả lời được xếp hạng cao thứ hai ở đây (http://stackoverflow.com/questions/276516/parsing-domain-from-url-in-php) có lẽ là đặt cược đơn giản nhất . – BenOfTheNorth