webForumDet fria alternativet

Strippa domännamn?

9 svar · 657 visningar · startad av mUTANT

mUTANTMedlem sedan mars 200533 inlägg
#1

Hej

Hittar inte så mycket om det här i forumet, så frågar.

Har någon en ide om hur man skulle kunna strippa vilket domännamn som helst via $_SERVER['REMOTE_ADDR'], t.ex.

https://www.test.com
your.file.test.com
test.com

så att man endast får ut: test.com

Vore tacksam för några olika synvinklar på detta.

emissionMedlem sedan dec. 19996 721 inlägg
#2

Det finns många sätt, men en enkel variant är att splitta strängen baserat på punkt, och plocka ut de två sista elementen i arrayen som returneras.

MeleaMedlem sedan juli 20033 147 inlägg
#3

Finns som sagt många sätt.
Ett är väl att använda sig av reguljära uttryck.

$split_url = preg_split("/[\.]+/", $url);

Ett annat är att köra med explode

$split_url = explode(".", $url);

I båda exemplen hämtar du ut adressen genom $split_url[1] och $split_url[2].

Dock otestat. :)

PeeerMedlem sedan mars 20025 907 inlägg
#4

Melea skrev:

Finns som sagt många sätt.
Ett är väl att använda sig av reguljära uttryck.

$split_url = preg_split("/[\.]+/", $url);

Ett annat är att köra med explode

$split_url = explode(".", $url);

I båda exemplen hämtar du ut adressen genom $split_url[1] och $split_url[2].

Dock otestat. :)

Förutsatt att adressen man skickar in består av "subdom.domän.toppdomän". Består adressen av "sub1.sub2.domän.toppdomän" eller bara "domän.toppdomän" så blir det fel :)

MatteMedlem sedan aug. 20002 975 inlägg
#5

Testa med

preg_match("/(^|\.)([^\.]+\.[^\.]+)$/", $url, $match);

Kolla vad du har i $match[2].

MeleaMedlem sedan juli 20033 147 inlägg
#6

Uhm, det här blev ju bökigare nu när man tänkte efter lite. :)
Matte, ditt uttryck kollar väl inte om domännamnet är ex. co.uk?

MatteMedlem sedan aug. 20002 975 inlägg
#7

Problemet är väl snarare att få ut domännamnet ur ip-numret.

MeleaMedlem sedan juli 20033 147 inlägg
#8

Hittade detta när jag sökte på google.

$subs = ''; $domainName = ''; $tld = ''; 

$gTlds = explode(',', str_replace(' ', '', "aero, biz, com, coop, info, 
jobs, museum, name, net, org, pro, travel, gov, edu, mil, int")); 

$cTlds = explode(',', str_replace(' ', '', "ac, ad, ae, af, ag, ai, al, 
am, an, ao, aq, ar, as, at, au, aw, az, ax, ba, bb, bd, be, bf, bg, bh, 
bi, bj, bm, bn, bo, br, bs, bt, bv, bw, by, bz, ca, cc, cd, cf, cg, ch, 
ci, ck, cl, cm, cn, co, cr, cs, cu, cv, cx, cy, cz, de, dj, dk, dm, do, 
dz, ec, ee, eg, eh, er, es, et, eu, fi, fj, fk, fm, fo, fr, ga, gb, gd, 
ge, gf, gg, gh, gi, gl, gm, gn, gp, gq, gr, gs, gt, gu, gw, gy, hk, hm, 
hn, hr, ht, hu, id, ie, il, im, in, io, iq, ir, is, it, je, jm, jo, jp, 
ke, kg, kh, ki, km, kn, kp, kr, kw, ky, kz, la, lb, lc, li, lk, lr, ls, 
lt, lu, lv, ly, ma, mc, md, mg, mh, mk, ml, mm, mn, mo, mp, mq, mr, ms, 
mt, mu, mv, mw, mx, my, mz, na, nc, ne, nf, ng, ni, nl, no, np, nr, nu, 
nz, om, pa, pe, pf, pg, ph, pk, pl, pm, pn, pr, ps, pt, pw, py, qa, re, 
ro, ru, rw, sa, sb, sc, sd, se, sg, sh, si, sj, sk, sl, sm, sn, so, sr, 
st, sv, sy, sz, tc, td, tf, tg, th, tj, tk, tl, tm, tn, to, tp, tr, tt, 
tv, tw, tz, ua, ug, uk, um, us, uy, uz, va, 
vc, ve, vg, vi, vn, vu, wf, ws, ye, yt, yu, za, zm, zw")); 

$tldarray = array_merge($gTlds,$cTlds);   
$testUrl = 'www.examplesite.com.pk'; 
$testUrl = 'http://secure.email.website.co.uk'; 
$testUrl = 'http://username:password@this.is.a.worst.shortly.subdomain.thisIsMyMainWebsite.com.cl';   

if (!strstr($testUrl, 'http://')) {
   $testUrl = "http://$testUrl"; 
} 

$testUrlParsed = parse_url(trim($testUrl)); 
$testUrlHost = $testUrlParsed['host'];   
$domainarray = explode('.', $testUrlHost);  
$top = count($domainarray);   

for ($i = 0; $i < $top; $i++) {
   $_domainPart = array_pop($domainarray);     
   if (!$tld_isReady)   {    
      if (in_array($_domainPart, $tldarray)) {       
         $tld = ".$_domainPart".$tld;     
      } else {
         $domainName = $_domainPart;
         $tld_isReady = 1;
      }
   } else {
      $subs = ".$_domainPart".$subs;
   }
}

echo 'subdomain is: '.substr($subs ,1).' and domain is: '.$domainName.$tld;

Dock väldigt otestat, knappt kollat igenom koden. :)
Men vad jag läste så är det vad du söker.

mUTANTMedlem sedan mars 200533 inlägg
#9

Tack Melea!

Det där är precis vad jag är ute efter, ett script som kan hantera alla typer av domäner med alla typer av subdomäner etc.

Bygger en site med ett affiliatesystem där affiliaten själv kan registrera ett domännamn, lägga till det i sin affiliate profil och peka domänen mot sitens IP. Därefter ska siten plocka fram rätt affiliate_id för domänamnet kunden anlände via.

Vilket skapade lite problem med en vanlig array/split med t.ex .co.uk adresser. Ser nu inga hinder alls för vilka domännamn en affiliate kan använda, så ett stort tack!

MeleaMedlem sedan juli 20033 147 inlägg
#10

Gott! :)

glöm inte att acceptera tråden som löst

130 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)