Lọc lấy đường dẫn (url) từ tên miền (domain) bằng PHP

26/07/2012

Filter url to domain

Mình xin chia sẻ với các bạn 3 hàm giúp  lọc 1 đường dẫn bất kỳ từ 1 tên miền nào đó. Đoạn code sau sẽ là nguồn tham khảo hữu ích cho những ai đam mê lập trình nói chung và bằng ngôn ngữ PHP nói riêng.

<?php
/*Hàm thứ nhất : loại bỏ tất cả các query string,
chỉ lấy subdomain (nếu có) hoặc domain */
function fulldomain($domainb) {
$bits = explode('/', $domainb);
if ($bits[0]=='http:' || $bits[0]=='https:')
{
return $bits[0].'//'.$bits[2].'/';
} else {
return 'http://'.$bits[0].'/';
}
unset($bits);
}
// Hàm thứ 2 : công dụng tương tự như hàm thứ 1 nhưng sử dụng regex
function preg_fulldomain ($domainb) {
return
preg_replace('/^((http(s)?:\/\/)?([^\/]+)(\/)?)(.*)/','$1',$domainb);
}
// Hàm thứ 3 : lấy domain và loại bỏ subdomain
function domain($domainb)
{
$bits = explode('/', $domainb);
if ($bits[0]=='http:' || $bits[0]=='https:')
{
$domainb= $bits[2];
} else {
$domainb= $bits[0];
}
unset($bits);
$bits = explode('.', $domainb);
$idz=count($bits);
$idz-=3;
if (strlen($bits[($idz+2)])==2) {
$url=$bits[$idz].'.'.$bits[($idz+1)].'.'.$bits[($idz+2)];
} else if (strlen($bits[($idz+2)])==0) {
$url=$bits[($idz)].'.'.$bits[($idz+1)];
} else {
$url=$bits[($idz+1)].'.'.$bits[($idz+2)];
}
return $url;
}
?>

Và sau đây là ví dụ minh họa việc sử dụng 3 hàm trên như sau :

<?php
$address='http://www.subdomain.example.com/blog/index.php?id=1';
echo fulldomain($address); // xuất ra http://www.subdomain.example.com/
echo '<br>';
echo preg_fulldomain($address); // xuất ra http://www.subdomain.example.com/
echo '<br>';
echo domain($address); // xuất ra example.com
?>

Hy vọng với 3 hàm trên sẽ giúp cho bạn thêm 1 kỹ năng lập trình bằng ngôn ngữ PHP, Chúc các bạn thành công !

Chuyên Mục:

Bài viết được đăng bởi webmaster

Nếu các bạn thấy bài viết hữu ích thì giúp mình Like cái nhé !
  • Chào anh! VD url:
    http://mods.mybb.com/download/a-clear-news-bar-1-6-x
    Anh có thể hướng dẫn em cách lấy đoạn sau cùng là (a-clear-news-bar-1-6-x)
    Thanks anh!

    • Rất đơn giản thôi bạn, bạn thử hàm này nhá :

      function geturl($address)
      {
      $vitri= strrpos($address,”/”);
      $url = substr($address,$vitri +1);
      return $url;
      }

      Chúc bạn thành công !