PHP Düzenli ifadeler kullanarak subdomain öğrenin

3 Cevap php

Maalesef bu bir yığın taşması soru olarak uygun olmak için bir meydan okuma çok az, ama ben tür yeni Düzenli ifadeler için yaşıyorum.

Benim sorum, feryat tüm örnekler için dizesini "belirteç" döndüren düzenli ifade olarak ne olduğunu?

  • token.domain.com
  • token.domain.com /
  • token.domain.com / index.php
  • token.domain.com / klasör / index.php
  • token.domain.com / klasör / alt klasör
  • token.domain.com / klasör / alt klasör / index.php
  • (added after edit)
  • domain.com
  • domain.com /

Im $ _SERVER ['SERVER_NAME'] değişkeni itibaren geçerli sayfanın alt etki alanını bulmak için bir preg_replace işlevinin içinde kullanmaya çalışıyorum.

Thank you in advance, titel

Edit note: Üzgünüm kaos ve sebnow, ben başlangıçta ne anlama geldiğini soruma, düzenlenebilir, ama yazmayı unuttum, bu hiç de herhangi bir alt olmadan çalışacağını oldu - durumda boş bir acı veya NULL dönecekti ki

3 Cevap

preg_replace('/^(?:([^\.]+)\.)?domain\.com$/', '\1', $_SERVER['SERVER_NAME'])

Edit: Senin için aşağıdaki çıktıyı yapar:

<?php
    echo preg_replace('/^(?:([^\.]+)\.)?domain\.com$/', '\1', "sean.domain.com") . "<br />";
    echo preg_replace('/^(?:([^\.]+)\.)?domain\.com$/', '\1', "titel.domain.com") . "<br />";
    echo preg_replace('/^(?:([^\.]+)\.)?domain\.com$/', '\1', "domain.com") . "<br />";
?>

Aşağıdaki regex full stop (subdomain) ve etki kalanı önce herhangi bir dize yakalamak:

^([^.]+)\..*$

Ama bunu yapmak için regex için gerek görmüyorum. Bu tam durağı tarafından bölünmüş ve ilk elemanı almak için çok daha kolay olacaktır:

list($subdomain, $rest) = explode('.', $_SERVER['SERVER_NAME'], 2);

: Eğer, () preg_replace kullanmak istiyorsanız

preg_replace('/\..*/', '', $_SERVER['SERVER_NAME'])