/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Fjerne 'www.' og '.dk'
Fra : Stig Nørgaard Jepsen


Dato : 01-08-01 14:00

Hvad er den nemmeste måde at gøre følgende på:

Har fx www.dk-it.dk og www.organist.org
Det jeg vil ha' tilbage i en variabel er henholdsvis "dk-it" og "oraganist".

Hvordan gøres det nemmest?

Mvh Stig



 
 
Morten Winther (01-08-2001)
Kommentar
Fra : Morten Winther


Dato : 01-08-01 14:05

"Stig Nørgaard Jepsen" <stigen@mail.dk> wrote in message
news:3b67fce9$0$2597$edfadb0f@dspool01.news.tele.dk...
> Hvad er den nemmeste måde at gøre følgende på:
>
> Har fx www.dk-it.dk og www.organist.org
> Det jeg vil ha' tilbage i en variabel er henholdsvis "dk-it" og
"oraganist".
>
> Hvordan gøres det nemmest?


<?

$url = 'www.test-navn.dk';

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

echo $ar_url[1];

?>



Lasse Hedegaard (01-08-2001)
Kommentar
Fra : Lasse Hedegaard


Dato : 01-08-01 14:03

Morten Winther skrev:

><?
>$url = 'www.test-navn.dk';
>$ar_url = explode(".", $url);
>echo $ar_url[1];
>?>

Så vil man jo ende mit abc i f.eks.
www.abc.dk-it.dk

- Men der stod jo heller ikke at det måske skulle bruges med
subdomains :)

venligst,
Lasse Hedegaard

--
Jeg fjerner SIM-låsen fra Nokia-, Ericsson- og Siemens-telefoner.
Vibratorer og ekstra spil installeres desuden i Nokia 3210.
Ericsson T10 opdateres til T18! (Dog uden aktiv klap)
Se www.fergusons.dk/simlock og www.simlock.dk

Stig Nørgaard Jepsen (01-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 01-08-01 14:10

> ><?
> >$url = 'www.test-navn.dk';
> >$ar_url = explode(".", $url);
> >echo $ar_url[1];
> >?>
>
> Så vil man jo ende mit abc i f.eks.
> www.abc.dk-it.dk
>
> - Men der stod jo heller ikke at det måske skulle bruges med
> subdomains :)

Heh... nej. Det stod der jo godt nok ikke, men faktisk skal det også bruges
med subdomæner...



Niels Andersen (01-08-2001)
Kommentar
Fra : Niels Andersen


Dato : 01-08-01 14:11

"Stig Nørgaard Jepsen" <stigen@mail.dk> wrote in message
news:3b67fce9$0$2597$edfadb0f@dspool01.news.tele.dk...
> Har fx www.dk-it.dk og www.organist.org
> Det jeg vil ha' tilbage i en variabel er henholdsvis "dk-it" og
"oraganist".

Dette skulle fjerne en evt. "www.", samt top-level domænet:

ereg("(www\.)?(.*)\.[^\.]+", $domain, $regs);
$stump = $regs[2];

Er testet med dine eksempler, og lidt mere. :)

--
Mvh.

Niels Andersen



Stig Nørgaard Jepsen (01-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 01-08-01 14:20

> > Det jeg vil ha' tilbage i en variabel er henholdsvis "dk-it" og
> "oraganist".
>
> Dette skulle fjerne en evt. "www.", samt top-level domænet:
>
> ereg("(www\.)?(.*)\.[^\.]+", $domain, $regs);
> $stump = $regs[2];
>
> Er testet med dine eksempler, og lidt mere. :)

Perfekt! :)

Hvor kan jeg læse noget om eregs?
Den ereg-sætning du har lavet der, er tæt på volapyk for mig... :)

/Stig



Jonas Delfs (01-08-2001)
Kommentar
Fra : Jonas Delfs


Dato : 01-08-01 14:57

"Stig Nørgaard Jepsen" <stigen@mail.dk> skrev i en meddelelse
news:3b680199$0$2563$edfadb0f@dspool01.news.tele.dk...

> > > Det jeg vil ha' tilbage i en variabel er henholdsvis "dk-it" og
> > "oraganist".
> >
> > Dette skulle fjerne en evt. "www.", samt top-level domænet:
> >
> > ereg("(www\.)?(.*)\.[^\.]+", $domain, $regs);
> > $stump = $regs[2];
> >
> > Er testet med dine eksempler, og lidt mere. :)
>
> Perfekt! :)
>
> Hvor kan jeg læse noget om eregs?

Det kaldes regular expressions, eller på dansk: regulære udtryk. :)
Der findes et par artikler på phpbuilder.com, men hvis du vil være rigtigt
hård kommer du vist ikke uden om bogen "Mastering Regular Expressions".

--
Mvh./Best Regards | Jonas Delfs, http://delfs.dk

"hehe ikke set en standart i min kode før, hvad er det for nogle dimser?" -
X



Niels Andersen (01-08-2001)
Kommentar
Fra : Niels Andersen


Dato : 01-08-01 15:43

"Stig Nørgaard Jepsen" <stigen@mail.dk> wrote in message
news:3b680199$0$2563$edfadb0f@dspool01.news.tele.dk...
> > ereg("(www\.)?(.*)\.[^\.]+", $domain, $regs);
> > $stump = $regs[2];
> Hvor kan jeg læse noget om eregs?
> Den ereg-sætning du har lavet der, er tæt på volapyk for mig... :)

Det kan jeg godt forstå, "regular expressions" er ikke det nemmeste at lære,
ved at se på eksempler. :)
Kort kan jeg forklare hvad der sker. Vi deler lige strengen op i bidder:

(www\.)?
Betyder at der evt. kan være strengen "www.". Der er skråstreg foran
punktum, fordi punktum er et special-tegn. Parentesen betyder at jeg samler
"www\." i en gruppe.
Spørgsmålstegnet betyder at det foregående (dvs. parentesen) skal være der
nul eller én gange.

(.*)
Som sagt er punktum et specialtegn. Det betyder "et eller andet tegn". Altså
en slags joker. I fx. dos og bash bruger man spørgsmålstegn til at vise det
samme.
Stjernen betyder "det foregående (punktummet) findes nul eller flere gange".
Dvs. ".*" betyder såmen bare "noget", og svarer til "*" i dos og bash.
Parentesen kommer vi til lidt senere... :)

\.[^\.]+
Først er det et punktum. Det er igen "escaped", da jeg mener et "rigtigt"
punktum, og ikke specialtegnet.
[^x] betyder "et tegn, der ikke er tegnet 'x'". [^\.] betyder altså "et
tegn, der ikke er et punktum.
Plusset betyder "én eller flere gange". [^\.]+ betyder altså "ét eller flere
tegn, men ingen punktummer".

Den sidste parameter i funktionen er valgfri, men her har vi brug for den.
Variablen "$regs" bliver til et array med præcis 10 elementer.
Element "0" er den del af "input", som bliver brugt. Her skulle det gerne
være det hele, selv om jeg ikke specifikt beder om dette. Hvis der er nogle
ekstra tegn før eller efter domænet (man overser tit fx. et mellemrum, når
man laver cut'n'paste i et gui) bliver de nok ignoreret. Det har jeg dog
ikke lige testet. :)
Element "1" er hvad der matchede med den første parentes. I dette tilfælle
"www." eller "" (intet).
Element "2" er selvfølgelig hvad der matchede med anden parentes. Og dette
er så "vinderen". :)

Her er lige lidt om regular expressions for begyndere:
http://mbn.dk/PHP/regex/
http://php.dk/artikler/regex.php
http://phpbuilder.com/columns/dario19990616.php3

Husk, regular expressions ER ikke nemt. :)
Nogle kommer hurtigt i gang med noget simpelt regexp, andre skal tygge på
det længe før de fatter noget som helst.
Avanceret regexp er en hel videnskab, og der er skrevet tykke bøger om det!
En af de mest roste/omtale er "Mastering Regular Expressions" fra O'Reiley.
(Håber jeg husker rigtigt, også med stavning.)


Mvh.

Niels Andersen



Stig Nørgaard Jepsen (01-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 01-08-01 16:02

Mange tak. Det var yderst behjælpeligt!

Mvh Stig



Morten Winther (01-08-2001)
Kommentar
Fra : Morten Winther


Dato : 01-08-01 15:11


"Niels Andersen" <niels-usenet@myplace.dk> wrote in message news:FdT97.28
> Dette skulle fjerne en evt. "www.", samt top-level domænet:
>
> ereg("(www\.)?(.*)\.[^\.]+", $domain, $regs);
> $stump = $regs[2];
>
> Er testet med dine eksempler, og lidt mere. :)

<?

$domain = 'sub.japan-photo.co.jp';

ereg("(www\.)?(.*)\.[^\.]+", $domain, $regs);
$stump = $regs[2];

echo $stump;

?>

Giver sub.japan-photo.co

/ morten



Stig Nørgaard Jepsen (01-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 01-08-01 15:35

> Giver sub.japan-photo.co

det kan jeg godt se :)
Men det er så ikke nær så nødvendigt

/Stig



Niels Andersen (01-08-2001)
Kommentar
Fra : Niels Andersen


Dato : 01-08-01 15:46

"Morten Winther" <mw@get2net.dk> wrote in message
news:9k92ep$2ko$1@sunsite.dk...
> $domain = 'sub.japan-photo.co.jp';
> Giver sub.japan-photo.co

Så vidt jeg forstod var det kun top-level domænet der skulle væk.
Det andet kan snildt klares, så skal vi bare have en liste over hvilke
topdomæner der gør det på den måde.


Mvh.

Niels Andersen



Finn Nielsen (01-08-2001)
Kommentar
Fra : Finn Nielsen


Dato : 01-08-01 16:27

"Niels Andersen" <niels-usenet@myplace.dk> writes:

> "Morten Winther" <mw@get2net.dk> wrote in message
> news:9k92ep$2ko$1@sunsite.dk...
> > $domain = 'sub.japan-photo.co.jp';
> > Giver sub.japan-photo.co
>
> Så vidt jeg forstod var det kun top-level domænet der skulle væk.
> Det andet kan snildt klares, så skal vi bare have en liste over hvilke
> topdomæner der gør det på den måde.

Det er da ikke nødvendigt:

ereg("([^\.]\.)*([^\.]+)\.[^\.]+", $domain, $regs);
$stump = $regs[2];


--
Finn Nielsen - http://www.zznyyd.dk/

Finn Nielsen (01-08-2001)
Kommentar
Fra : Finn Nielsen


Dato : 01-08-01 16:33

Finn Nielsen <usenet01@zznyyd.dk> writes:

> "Niels Andersen" <niels-usenet@myplace.dk> writes:
>
> > "Morten Winther" <mw@get2net.dk> wrote in message
> > news:9k92ep$2ko$1@sunsite.dk...
> > > $domain = 'sub.japan-photo.co.jp';
> > > Giver sub.japan-photo.co
> >
> > Så vidt jeg forstod var det kun top-level domænet der skulle væk.
> > Det andet kan snildt klares, så skal vi bare have en liste over hvilke
> > topdomæner der gør det på den måde.
>
> Det er da ikke nødvendigt:
>
> ereg("([^\.]\.)*([^\.]+)\.[^\.]+", $domain, $regs);
> $stump = $regs[2];


Sorry, dette virker:

ereg("([^\.]\.)*([^\.]+)\.[^\.]+$", $domain, $regs);
$stump = $regs[2];

--
Finn Nielsen - http://www.zznyyd.dk/

Stig Nørgaard Jepsen (01-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 01-08-01 19:39

> > > Så vidt jeg forstod var det kun top-level domænet der skulle væk.
> > > Det andet kan snildt klares, så skal vi bare have en liste over hvilke
> > > topdomæner der gør det på den måde.
> >
> > Det er da ikke nødvendigt:
> >
> > ereg("([^\.]\.)*([^\.]+)\.[^\.]+", $domain, $regs);
> > $stump = $regs[2];
>
>
> Sorry, dette virker:
>
> ereg("([^\.]\.)*([^\.]+)\.[^\.]+$", $domain, $regs);
> $stump = $regs[2];

Takker mange gange! :)



Niels Andersen (01-08-2001)
Kommentar
Fra : Niels Andersen


Dato : 01-08-01 19:39

"Finn Nielsen" <usenet01@zznyyd.dk> wrote in message
news:m33d7bvlqx.fsf@ares.zznyyd.dk...
> > > > $domain = 'sub.japan-photo.co.jp';
> > > > Giver sub.japan-photo.co

> > > Så vidt jeg forstod var det kun top-level domænet der skulle væk.
> > > Det andet kan snildt klares, så skal vi bare have en liste over hvilke
> > > topdomæner der gør det på den måde.

> > Det er da ikke nødvendigt:
> ereg("([^\.]\.)*([^\.]+)\.[^\.]+$", $domain, $regs);
> $stump = $regs[2];

Og hvad skulle det så gøre? Har du testet det? Ellers kan det ses her:
http://myplace.dk/test/test.php?domain=sub.japan-photo.co.jp

Med "sub.japan-photo.co.jp" får jeg "sub.japan-photo.co", ved at fjerne en
evt. "www." og TLD'en.
Problemet er vel, at ".co" også skulle væk. Med din løsning er "co" det
eneste der er tilbage...

Stig, her kan du se resultatet af en dårlig kravspecifikation... *LOL*! :)

Jeg fjerne en evt. "www." og TLD'en.
Finn hiver 2. level domænet ud.

Begge dele løser det problem du beskrev, selv om de gør to vidt forskellige
ting. :)


Mvh.

Niels Andersen



Stig Nørgaard Jepsen (01-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 01-08-01 19:45

> > > > $domain = 'sub.japan-photo.co.jp';
> > > > Giver sub.japan-photo.co
> > >
> > > Så vidt jeg forstod var det kun top-level domænet der skulle væk.
> > > Det andet kan snildt klares, så skal vi bare have en liste over hvilke
> > > topdomæner der gør det på den måde.
> >
> > Det er da ikke nødvendigt:
> >
> > ereg("([^\.]\.)*([^\.]+)\.[^\.]+", $domain, $regs);
> > $stump = $regs[2];
>
> Sorry, dette virker:
> ereg("([^\.]\.)*([^\.]+)\.[^\.]+$", $domain, $regs);
> $stump = $regs[2];

Skal passe på med at takke for hurtigt.
Jeg synes nemlig kun jeg får 'co' ud af 'sub.japan-photo.co.jp'

Mvh Stig



N/A (01-08-2001)
Kommentar
Fra : N/A


Dato : 01-08-01 21:11



Stig Nørgaard Jepsen (01-08-2001)
Kommentar
Fra : Stig Nørgaard Jepsen


Dato : 01-08-01 21:11

> > > > > > $domain = 'sub.japan-photo.co.jp';
> > > > > > Giver sub.japan-photo.co
> > > > >
> > > > > Så vidt jeg forstod var det kun top-level domænet der skulle væk.
> > > > > Det andet kan snildt klares, så skal vi bare have en liste over
hvilke
> > > > > topdomæner der gør det på den måde.
> > > >
> > > > Det er da ikke nødvendigt:
> > > >
> > > > ereg("([^\.]\.)*([^\.]+)\.[^\.]+", $domain, $regs);
> > > > $stump = $regs[2];
> > >
> > > Sorry, dette virker:
> > > ereg("([^\.]\.)*([^\.]+)\.[^\.]+$", $domain, $regs);
> > > $stump = $regs[2];
> >
> > Skal passe på med at takke for hurtigt.
> > Jeg synes nemlig kun jeg får 'co' ud af 'sub.japan-photo.co.jp'
>
> Var det ikke det du ville? Have lige præcis 2nd level?
>
> Mit regulære udtryk giver dette:
>
> www.domæne.tld -> domæne
> www.sub.domæne.tld -> domæne
> ting.sub.domæne.tld -> domæne
> www.ting.sub.domæne.tld -> domæne
> sub.japan-photo.co.jp -> co
>
> Hvis det ikke er det du ville må jeg give Niels ret i at en bedre
> kravspecificering er på plads..

Heh.. jeg var egentlig ikke klar over at co'et i sub.japan-photo.co.jp var
domænet. Jeg troede at co.jp var tld'en (hvad står det for) til sammen.
Men hvis man skriver sub.japan-photo.co.jp Er så 'japan-photo' så ikke
subdomæne til 'co'? og hvad så med 'sub' ?

Men grunden til at jeg skal ha' lavet alt dette er at mit program skal lave
nogle navne automatisk der svarer til domæne-navnet, og som kan være navnet
på en tabel i SQL.
Hvis det er forståeligt.

Mvh Stig



Finn Nielsen (01-08-2001)
Kommentar
Fra : Finn Nielsen


Dato : 01-08-01 21:34

"Stig Nørgaard Jepsen" <stigen@mail.dk> writes:

> > Var det ikke det du ville? Have lige præcis 2nd level?
> >
> > Mit regulære udtryk giver dette:
> >
> > www.domæne.tld -> domæne
> > www.sub.domæne.tld -> domæne
> > ting.sub.domæne.tld -> domæne
> > www.ting.sub.domæne.tld -> domæne
> > sub.japan-photo.co.jp -> co
> >
> > Hvis det ikke er det du ville må jeg give Niels ret i at en bedre
> > kravspecificering er på plads..
>
> Heh.. jeg var egentlig ikke klar over at co'et i sub.japan-photo.co.jp var
> domænet. Jeg troede at co.jp var tld'en (hvad står det for) til sammen.

tld er "top level domain", det det der er efter det sidste punktum i et
hostnavn, for sub.japan-photo.co.jp er tld "jp".

> Men hvis man skriver sub.japan-photo.co.jp Er så 'japan-photo' så ikke
> subdomæne til 'co'? og hvad så med 'sub' ?

"sub" er et hostnavnet i subdomænet.

I visse lande er det faktisk kun muligt at registrere subdomæner, hvilket
sikkert er tilfældet her. I de tilfælde er det naturligvis nemt at
forveksle subdomænet med et domæne da det i praksis faktisk er det "domæne"
man har fået lov at registre. 2nd level er så kun det egentlige domæne i
ren teknisk forstand.

> Men grunden til at jeg skal ha' lavet alt dette er at mit program skal lave
> nogle navne automatisk der svarer til domæne-navnet, og som kan være navnet
> på en tabel i SQL.
> Hvis det er forståeligt.

Så tror jeg Niels' forslag giver et mere brugbart resultat, da 2nd level
så ikke altid vil være passende.

--
Finn Nielsen - http://www.zznyyd.dk/

Søg
Reklame
Statistik
Spørgsmål : 177522
Tips : 31968
Nyheder : 719565
Indlæg : 6408672
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste