2017-03-16 6 views
0

から単一の値を抽出する:にするpreg_match()PHP

preg_match('/[a-z]+.[a-z]+$', $_SERVER['HTTP_HOST'], $domain); 

$SERVER['HTTP_HOST'] = subdomain.mydomain.comと、 preg_match()、この場合には、すべてのマッチを含む配列$domainが作成されます。$domain = ["mydomain.com"]

私が欲しい

結果は、私の質問は、されている$domain = "mydomain.com"


ですそこにこれを行うために、よりエレガントな方法より:

preg_match('/[a-z]+.[a-z]+$', $_SERVER['HTTP_HOST'], $domain); 
$domain = $domain[0]; 
+0

'するpreg_match 'はすべてのマッチの配列を返しません。マッチするのは1つだけです(これは' preg_match_all() 'との違いです)。配列はキャプチャグループ用です。 – Barmar

+0

唯一の選択肢は 'list($ domain)= $ domain;' – Barmar

+0

です。私はinelegant.itsコードではなく、芸術ではないと考えています。 – nogad

答えて

1

それがよりエレガントであるかどうか私は知りませんが、それはもう少し直接的です:

$arr = [ 
    'subdomain.mydomain.com', 
    'mydomain.com', 
    'subdo.subdomain.mydomain.com' 
]; 

foreach ($arr as $item) { 
    echo preg_replace('~(?:.*\.)?(?=.*\.)~', '', $item), PHP_EOL; 
} 

demo