URL Zerlegen problem :/

MichaSBK

Mitglied
Hey Leutz,

hoffe das mir jemand weiter helfen kann und zwar bin ich auf der suche wie man die url's in 3 Teile zerlegen kann.

Beispiel: http://www.mailtausch.propaid.de

würde das gerne so haben:

1. Teil www
2. Teil mailtausch.propaid
3. Teil .de

hatte mir zwar schon ne Funktion geschrieben:
----
// Schneidet z.b www und .de Endung weg
function cut($Anbieter)
{
$Anbieter_Name = explode(".",$Anbieter);
$Anbieter_Name = $Anbieter_Name[1];
return $Anbieter_Name;
}
----

aber wenn in der Url mehere Punkte vorkommen, habe ich das problem, dass diese einzelne Teile wiederum in andere Arrays dann liegen darum würde ich gerne mal Fragen ob jemand von euch jemand nen besseren Rat hat, wie man dies realisieren kann :/

MfG Michael
 
Hi,

also folgende Überlegungen solltest du anstellen:

Du hast FQDN's nach folgendem Aufbau:

(www)optional.sd1.sd2.sd3. ... d.tld

Subdomains, Domain, Top-Level-Domain

Wenn du das explode (".", $string) machst ist

die Domain ist immer: $domains[count ($domains) - 2], die TLD ist immer $domains[count($domains) - 1].

-1 bzw. -2, weil die Arrays ja mit 0 beginnen.

Ich hoffe ich konnte mich einigermaßen klar ausrücken.
 
Hi won_gak,

habe deine Überlegung soweit verstanden, aber wüßte mometan nicht, wie ich das als script dann schreiben könnte, wegen den abfragen :rolleyes: .. hatte auch schonmal bei google gesucht aber hatte dort soweit auch nix groß artiges gefunden, weiß ja nun nicht ob es dazu auch tutorials gibs.

MfG Micha
 
PHP:
function split_domains ($wasauchimmer)
{
  $domains = explode (".", $wasauchimmer);
  if ($domains[0] == "www")
  {
    $ret["www"] = "www";
    $ret["tld"] = $domains[count($domains) - 1];
    // Wenn es nun noch Subdomains gibt ($domains - "www" - domain - tld)
    if (count ($domains) > 3)
    {
      for ($i = 1; $i < count($domains) - 1; $i++)
      {
        $ret["dazwischen"] .= $domains[$i];
      }
    }
  } else {
    $ret["tld"] = $domains[count($domains) - 1];
    for ($i = 0; $i < count ($domains) -1; $i++)
    {
      $ret["dazwischen"] .= $domains[$i];
    }
  }
  return $ret;
}

$domains = split_domains ($wasauchimmer);

echo $domains["www"] . "<br>";
echo $domains["dazwischen"] . "<br>";
echo $domains["tld"] . "<br>";

Ist zwar blöde gecodet, aber du siehst so genau, wie ich die Überlegung schrittweise umgesetzt habe.
 
Zuletzt bearbeitet:
Hey,

danke erstmal für die schnelle Hilfe :) aber wenn ich das Script mometan ausführe bekomme ich nen Fehler angezeigt:

Parse error: parse error, unexpected T_IS_EQUAL in ... line 5

hab aber dort nachgeschau, konnte aber irgentwie kein fehler finden,
habe aber diese funktion mit der entsprechende domain aufgerufen :rolleyes:

MfG Micha
 
da hat sich ne Klammer eingeschlichen...

Mach die weg nach $domains[0]

-- edit

So, hab das Script weiter oben auch berichtigt.
 
Weil er dir ein assoziiertes Array zurückgibt. Du musst natürlich die Assoziationen mit angeben.

Guckst du oben bei script.
 
ok :) funktioniert jetz, wie ich mir das vorgestellt habe, hatte nur bei der echo ausgabe nen fehler drinne was das array betrifft.

MfG Micha
 
Zurück