Dưới đây là mã tôi đã tạo ra rằng 100% chỉ tìm thấy tên miền, vì nó đưa mozilla suls vào tài khoản. Chỉ có điều bạn phải kiểm tra là cách bạn tạo bộ nhớ cache của tệp đó, vì vậy bạn không truy vấn Mozilla mỗi lần.
Vì một số lý do kỳ lạ, các tên miền như Co.uk không có trong danh sách, vì vậy bạn phải thực hiện một số hack và thêm chúng theo cách thủ công. Nó không phải là giải pháp sạch nhất nhưng tôi hy vọng nó sẽ giúp ích cho ai đó.
//=====================================================
static function domain[$url]
{
$slds = "";
$url = strtolower[$url];
$address = '//mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1';
if[!$subtlds = @kohana::cache['subtlds', null, 60]]
{
$content = file[$address];
foreach[$content as $num => $line]
{
$line = trim[$line];
if[$line == ''] continue;
if[@substr[$line[0], 0, 2] == '/'] continue;
$line = @preg_replace["/[^a-zA-Z0-9\.]/", '', $line];
if[$line == ''] continue; //$line = '.'.$line;
if[@$line[0] == '.'] $line = substr[$line, 1];
if[!strstr[$line, '.']] continue;
$subtlds[] = $line;
//echo "{$num}: '{$line}'"; echo "
";
}
$subtlds = array_merge[Array[
'co.uk', 'me.uk', 'net.uk', 'org.uk', 'sch.uk', 'ac.uk',
'gov.uk', 'nhs.uk', 'police.uk', 'mod.uk', 'asn.au', 'com.au',
'net.au', 'id.au', 'org.au', 'edu.au', 'gov.au', 'csiro.au',
],$subtlds];
$subtlds = array_unique[$subtlds];
//echo var_dump[$subtlds];
@kohana::cache['subtlds', $subtlds];
}
preg_match['/^[[\/]{2,}]?[[^\/]+]/i', $url, $matches];
//preg_match["/^[\/\/|\/\/|][a-zA-Z-][[^\/]+]/i", $url, $matches];
$host = @$matches[2];
//echo var_dump[$matches];
preg_match["/[^\.\/]+\.[^\.\/]+$/", $host, $matches];
foreach[$subtlds as $sub]
{
if [preg_match["/{$sub}$/", $host, $xyz]]
preg_match["/[^\.\/]+\.[^\.\/]+\.[^\.\/]+$/", $host, $matches];
}
return @$matches[0];
}
Tên miền Parse từ URL được sử dụng trong nhiều trường hợp trong dự án web. Trong hướng dẫn ngắn này, chúng tôi sẽ cung cấp một đoạn mã đơn giản để lấy tên miền từ URL trong PHP. Sử dụng tập lệnh ví dụ của chúng tôi, bạn sẽ chỉ có thể trích xuất tên miền từ bất kỳ loại URL nào.
Tất cả mã PHP được nhóm lại với nhau trong hàm getDomain[]
. Thông số URL $ nên được chuyển đến hàm getDomain[]
, từ đó bạn muốn lấy tên miền. getDomain[]
Hàm trả về tên miền nếu được tìm thấy và sai nếu không tìm thấy.
function getDomain[$url]{
$pieces = parse_url[$url];
$domain = isset[$pieces['host']] ? $pieces['host'] : '';
if[preg_match['/[?P[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6}]$/i', $domain, $regs]]{
return $regs['domain'];
}
return FALSE;
}echo
getDomain["//example.com"]; // outputs 'example.com'
echo getDomain["//www.example.com"]; // outputs 'example.com'
echo getDomain["//mail.example.co.uk"]; // outputs 'example.co.uk'
Gần đây tôi cần lấy tên miền từ URL. Đây là một nhiệm vụ nhỏ nhưng nó là những thứ rất hữu ích. Trong bài viết ngắn này, chúng tôi sẽ cung cấp cho bạn mã đơn giản và dễ dàng để lấy tên miền từ URL trong PHP.
Đầu tiên bạn cần phân tích URL bằng parse_url []. Bạn có thể nhận được mảng từ url parse. Bây giờ, bạn có thể nhận được máy chủ cụ thể từ mảng bằng $ parse [‘máy chủ]].parse_url[]. you can get the array from parse URL. Now, you can get the specific host from the array using $parse[‘host’].
Trong ví dụ này, bạn sẽ chỉ có thể nhận được tên miền từ url hiện tại của bạn.