www. aus hostnamen entfernen
Richard Reuter
- php
0 Fabienne0 Daniel2 Sven Rautenberg
Hallo ! Ich habe mehrere Webadressen die alle auf ein und dieselbe Homepage zugreifen. Damit die Formulare funktionieren egal welche Adresse der User eingegeben hat muß ich in diese die aktuelle Mailadresse automatisch eingeben. D.h. der User gibt z.B. www.adresse-a.de ein dann muß php in das Formular webmaster@Adresse-a.de schreiben. Wenn der User www.adresse-b.de eingibt muß php in das Formular webmaster@adresse-b.de schreiben.
Mit $_SERVER["HTTP_HOST"] kann ich zwar die eingegebene Adresse z.B. www.adresse-a.de auslesen, aber wie bekomme ich das "www." aus diesem String heraus ? Für andere Zwecke müsste ich auch noch das ".de" entfernen. Wer kann mir sagen wie ich das bewerkstelligt bekomme ?
Danke schon mal im vorraus.
// get last two segments of host name
preg_match("/[^./]+.[^./]+$/", $host, $matches);
$domain=$matches[0];
// get last two segments of host name
preg_match("/[^./]+.[^./]+$/", $host, $matches);Ausgabe?
echo "domain name is: {$matches[0]}<br>\n";
$domain=$matches[0];
Sollte natürlich nicht $host heißen, soondern:
Oder so: Dann gibts die Subdomain....
// get host name from URL
preg_match("/^(http://)?([^/]+)/i",$_SERVER["HTTP_HOST"] , $matches);
$host = $matches[2];
$matched = explode('.',$matches[2]);
$subdomain=$matched[0];
$subdomain2=$matched[1];
n'abend,
// get last two segments of host name
preg_match("/[^./]+.[^./]+$/", $host, $matches);Ausgabe?
echo "domain name is: {$matches[0]}<br>\n";
$domain=$matches[0];
es gibt auch mail-adressen a la bla@blubb.company.de ;)
wenn du nur das 'www.' entfernen willst, so kannst du das mit
str_replace('www.','',$deinedomain);
erledigen
weiterhin schönen abend...
puts "Hallo " + gets.chomp + "."
?> Fabienne
=> Hallo Fabienne.
// get last two segments of host name
preg_match("/[^./]+.[^./]+$/", $host, $matches);Ausgabe?
echo "domain name is: {$matches[0]}<br>\n";
$domain=$matches[0];
Du schießt gerade mit Kanonen auf Spatzen. Hierfür reicht str_replace() vollkommen aus, wie Daniel schon bemerkte.
Gruß, Ashura
Hi Ashura,
Hierfür reicht str_replace() vollkommen aus, wie Daniel schon bemerkte.
wenn die addresse gleich lang sind wie zum Beispiel:
www.domain-a.de
www.domain-b.de
www.dsdfaasd.de
etc.
dann reicht sogar ein substr(). Aber nur dann.
MfG
Hallo ihr zwei, drei beiden (...),
dann reicht sogar ein substr(). Aber nur dann.
Dem kann ich mir nur anschließen. Aber auch nur "dann".
Wenn z.B. Subdomains verwendet werden und man diese auch gerne irgendwie mit in die Namensauflösung reinbasteln will, dann braucht man eine "Kanonenlösung".
Nix für ungut. Würde dennoch meine Lösung bevorzugen, da diese universeller wenn auch komplizierter ist.
Grüße
echo $begrüßung;
Hierfür reicht str_replace() vollkommen aus, wie Daniel schon bemerkte.
wenn die addresse gleich lang sind wie zum Beispiel:
dann reicht sogar ein substr(). Aber nur dann.
Nein, das stimmt so nicht. Man kann als length für substr auch gefahrlos Werte angeben, die (sogar) größer als die Länge des Ausgangsstrings sein können.
Also ein substr($www, 4, strlen($www)) oder substr($www, 4, 1000) ist durchaus akzeptabel.
echo "$verabschiedung $name";
Hi,
Also ein substr($www, 4, strlen($www)) oder substr($www, 4, 1000) ist durchaus akzeptabel.
das stimmt schon, allerdings will er das .de ja auch wegmachen.
MfG
echo $begrüßung;
Also ein substr($www, 4, strlen($www)) oder substr($www, 4, 1000) ist durchaus akzeptabel.
das stimmt schon, allerdings will er das .de ja auch wegmachen.
Gut, dann kommt ein bisschen mehr Stringarithmetik zum Einsatz:
substr($www, 4, strlen($www) - 4 - strlen(strrchr($www, '.')));
echo "$verabschiedung $name";
Moin!
Also ein substr($www, 4, strlen($www)) oder substr($www, 4, 1000) ist durchaus akzeptabel.
das stimmt schon, allerdings will er das .de ja auch wegmachen.
Wer ist "er"? Der OP will das nicht.
Abgesehen davon ist der dritte Parameter bei substr() absolut unnötig und muß nicht falsch mit "1000" ('Hauptsache große Zahl, wird schon nix schiefgehen') oder aufwendig mit "strlen" ermittelt werden.
Hi,
Wer ist "er"? Der OP will das nicht.
Zitata OP:
Für andere Zwecke müsste ich auch noch das ".de" entfernen
Desweiteren würde ich ein einfaches explode nutzen. dann ist das www und das de in einem Schritt seperat
Hi,
Desweiteren würde ich ein einfaches explode nutzen. dann ist das www und das de in einem Schritt seperat
da sieht man mal wieder, viele wege führen nach rom.
MfG
Moin!
Zitata OP:
Für andere Zwecke müsste ich auch noch das ".de" entfernen
Ok, hatte ich übersehen.
Hinten drei Zeichen abschneiden: substr($www,0,-3)
Hallo.
Hinten drei Zeichen abschneiden: substr($www,0,-3)
Vorausgesetzt natürlich, dass es bei ccTLD bleibt.
MfG, at
Hi,
wie bekomme ich das "www." aus diesem String heraus? Für andere Zwecke müsste ich auch noch das ".de" entfernen.
wie säre es mit einem str_replace()? oder substr()?
MfG
Moin!
Hallo ! Ich habe mehrere Webadressen die alle auf ein und dieselbe Homepage zugreifen. Damit die Formulare funktionieren egal welche Adresse der User eingegeben hat muß ich in diese die aktuelle Mailadresse automatisch eingeben. D.h. der User gibt z.B. www.adresse-a.de ein dann muß php in das Formular webmaster@Adresse-a.de schreiben. Wenn der User www.adresse-b.de eingibt muß php in das Formular webmaster@adresse-b.de schreiben.
Nein, du willst die Zielmailadresse keinesfalls in das Formular hineinschreiben. Würdest du diese dann ungeprüft zum Versand der Mail nutzen (was nach deiner Schilderung wahrscheinlich anzunehmen ist), könnte man auch jede beliebige andere Adresse eintragen (manipuliertes Formular), und so prima spammen.
Das mailversendende Skript sollte erst entscheiden, wer die Mail kriegen soll:
$_SERVER['HTTP_HOST'] enthält die benutzte Domain, und wenn du
$mailadressen = array(
"www.domain1.tld" => "webmaster@domain1.tld",
"domain1.tld" => "webmaster@domain1.tld", // kann ja auch als Hostname definiert sein
"www.domain2.tld" => "webmaster@domain2.tld",
"www.domain3.tld" => "irgendwer@gmx.tld" // wenn die Mail ganz woanders hin soll - diese Freiheit hättest du damit auch
);
$empfaengermail = $mailadressen[$_SERVER['HTTP_HOST'];
mail($empfaengermail....);
Moin!
$_SERVER['HTTP_HOST'] enthält die benutzte Domain, und wenn du
$mailadressen = array(
"www.domain1.tld" => "webmaster@domain1.tld",
"domain1.tld" => "webmaster@domain1.tld", // kann ja auch als Hostname definiert sein
"www.domain2.tld" => "webmaster@domain2.tld",
"www.domain3.tld" => "irgendwer@gmx.tld" // wenn die Mail ganz woanders hin soll - diese Freiheit hättest du damit auch
);$empfaengermail = $mailadressen[$_SERVER['HTTP_HOST'];
mail($empfaengermail....);
so die Empfängermailadresse definierst, hast du grundsätzlich größere Freiheiten und in jedem Fall festgelegte, nicht frei bespammbare Mailadressen definiert.
- Sven Rautenberg