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

Cập nhật: Lượt xem: 330 [ PHP ]

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.

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

<?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!