webForumDet fria alternativet

Strippa domännamn?

PHP

9 svar · 657 visningar · startad av mUTANT

Medlem sedan mars 200533 inlägg
Frågan#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.

Medlem 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.

Medlem 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. :)

Medlem 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 :)

Medlem sedan aug. 20002 975 inlägg
#5

Testa med

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

Kolla vad du har i $match[2].

Medlem 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?

Medlem sedan aug. 20002 975 inlägg
#7

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

Medlem 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.

Medlem 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!

Medlem sedan juli 20033 147 inlägg
#10

Gott! :)

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

265 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)