マルチサイトで子サイトのサブドメインを抜き出す方法

サブドメインで運営しているマルチサイトで、
子サイトのサブドメイン名だけ抜き出す方法です。

Sponsored Link

親サイトのURLがドメインの場合

例えば、子サイトのURLが

http://blog.expmple.com/

だったとします。
URLの【blog】だけを抜き出したい時に取得する方法です。

親サイトのIDを取得

get_blog_details(1)

の1は、親サイトのIDを指定します。

恐らくデフォルトで1だと思います。

get_blog_detailsは、サイトIDを指定することにより、
マルチサイトの情報を引き出すことができます。

get_blog_details(1)

をvar_dumpで引き出した内容です。

object(stdClass)#3418 (15) {
  ["blog_id"]=>
  string(1) "1"
  ["site_id"]=>
  string(1) "1"
  ["domain"]=>
  string(17) "eternal-tears.com"
  ["path"]=>
  string(1) "/"
  ["registered"]=>
  string(19) "2010-06-29 14:33:41"
  ["last_updated"]=>
  string(19) "2012-01-18 07:46:06"
  ["public"]=>
  string(1) "1"
  ["archived"]=>
  string(1) "0"
  ["mature"]=>
  string(1) "0"
  ["spam"]=>
  string(1) "0"
  ["deleted"]=>
  string(1) "0"
  ["lang_id"]=>
  string(1) "0"
  ["blogname"]=>
  string(15) "Eternal-tears+*"
  ["siteurl"]=>
  string(28) "http://www.eternal-tears.com"
  ["post_count"]=>
  string(3) "154"
}
$child_domain_details -> domain

で、サブドメイン.ドメインを取得することができます。

トップドメインを削る

このままでは、ドメインが邪魔になるので、

str_replace

で置換します。

$top_domain->domain

で親サイトのドメインを取得出来ます。

サブドメインとドメインの間のコンマ(.)も取らなければならないので、

".".$top_domain -> domain

と記述します。

最終的なソース

<?php
global $blog_id;
$top_domain = get_blog_details(1);
$child_domain_details = get_blog_details($blog_id);
$child_domain =str_replace(".".$top_domain -> domain, "", $child_domain_details -> domain);
echo $child_domain;
?>

親サイトをwwwなどのサブドメインで運営している場合

もしwwwなどが付いている場合は、
$top_domainの時点で、置換してあげます。

$top_domain_only = str_replace("www.","",$top_domain -> domain);

最終的なソースは、

<?php
global $blog_id;
$top_domain = get_blog_details(1);
$top_domain_only = str_replace("www.","",$top_domain -> domain);
$child_domain_details = get_blog_details($blog_id);
$child_domain =str_replace(".".$top_domain_only, "", $child_domain_details -> domain);
echo $child_domain;
?>
Sponsored Link