Frage zur Domain verarbeitung mit $_server

ciberjoerg

Erfahrenes Mitglied
Abend zusammen, ich wollte mal fragen wie ich mit einem php Script eine Subdomain auslesen kann was zwischen http:// und .domainname oder www. und .domainname ist. Geht das mit einer art explode script?

PHP:
<?
$domain = explode(".", $_SERVER["HTTP_HOST"]);
echo $subdomain = $domain[0];
?>
 
Benutze doch bitte eine Suchmaschine deiner Wahl, z.B.: Google

*applaus* für googlelinks sind foren da

@Topic
Mit explode geht es durchaus, nur musst du immer Eventualitäten berücksichtigen, d.h. es setzt noch jemand ein www. in die URL, z.b. http://www.sub.domain.de.
oder aber du hast gar keine subdomain und der Nutzer befindet sich direkt auf http://www.domain.de, hier kannst du mit Schleifen abhilfe schaffen.

Also dein Skript sollte eigentlich funktionieren.

Ansonsten kannst du auch mit substr arbeiten:
PHP:
$domain = substr($_SERVER['HTTP_HOST'],0,strpos($_SERVER['HTTP_HOST'], '.'));
 
Zuletzt bearbeitet:
@just-click:

Dein Skript funktioniert ja eben nicht, wenn die HTTP_HOST z.B. http://www.example.org.

Ich habe mal diese (vllt. sehr sehr unsauberen) Funktionen gebaut:
PHP:
function GetLastSubdomain()
{
  $parts = explode(".", $_SERVER['HTTP_HOST']);
  $known_hosts = array("www", "www2");
  if (in_array($parts[0], $known_hosts)===true)
  {
    return $parts[1];
  }
  else
  {
    return $parts[0];
  }
  return $parts[0];
}
function GetMainDomain()
{
  $parts = explode(".", $_SERVER['HTTP_HOST']);
  require("tldlist.php");
  for ($i=0; $i<count($parts); $i++)
  {
    foreach ($known_tlds as $tld)
    {
      if (!isset($parts[$i+1])) return "";
      if ($tld==substr($parts[$i+1], 0, strlen($tld)))
      {
        return $parts[$i];
      }
    }
  }
}
Die TLD-Liste von http://openminds.lucido-media.de/liste-aller-tlds-array-regex habe ich als Anhang hochgeladen.
 

Anhänge

Zuletzt bearbeitet:
Klar funktioniert es, es erkennt, dass vor dem ersten Punkt ein www steht und wenn man das schonmal erkannt hat, ist vieles gewonnen.

Im Prinzip machst du ja nichts anderes als ich beschrieben habe, du prüfst was vor dem ersten Punkt steht.
 
Zurück