/ 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
eregi() problem?
Fra : Tonni Aagesen


Dato : 05-10-02 08:34

Hejsa NG,

Jeg har brug for at tjekke om et domænenavn er indstastet korrekt. Jeg skal
tjekke om:

1) domænenavnet kun indeholder valide tegn a-z og 0-9 samt "-" og "_".
2) domænenavnet ikke starter eller slutter med "-" eller "_".
3) korrekt tld.

Jeg er indtil videre kommet frem til følgende:

eregi("^[a-z0-9][a-z0-9\-\_]+[a-z0-9]+\.+(dk|com|net|org|info)$",
"php.net");

Men den har ikke den ønskede effekt. Hvad gør jeg galt?


--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>




 
 
Jakob Kirkegaard (05-10-2002)
Kommentar
Fra : Jakob Kirkegaard


Dato : 05-10-02 20:45

Tonni Aagesen wrote:

> eregi("^[a-z0-9][a-z0-9\-\_]+[a-z0-9]+\.+(dk|com|net|org|info)$",
^
Du ønsker vel kun ét og netop ét punktum mellem tld og selve domænet,
hvorfor det markerede + vel skal væk. Derudover kan jeg ikke se der skulle
være noget galt. Hvordan fejler den ?

--
mvh Jakob Kirkegaard
http://jakir.dk

Tonni Aagesen (06-10-2002)
Kommentar
Fra : Tonni Aagesen


Dato : 06-10-02 11:04


"Jakob Kirkegaard" <jkir00@control.auc.dk> skrev i en meddelelse
news:annfgn$li7$1@sunsite.dk...

> > eregi("^[a-z0-9][a-z0-9\-\_]+[a-z0-9]+\.+(dk|com|net|org|info)$",
> ^
> Hvordan fejler den ?

Den vil ikke acceptere hverken bindestreg eller underscore. Dette er fint
nok så længe domænet starter eller slutter med disse, men den vil heller
ikke acceptere "foo-bar.dk".


--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>



Jakob Kirkegaard (06-10-2002)
Kommentar
Fra : Jakob Kirkegaard


Dato : 06-10-02 11:54

Tonni Aagesen wrote:
>> > eregi("^[a-z0-9][a-z0-9\-\_]+[a-z0-9]+\.+(dk|com|net|org|info)$",
> Den vil ikke acceptere hverken bindestreg eller underscore. Dette er fint
> nok så længe domænet starter eller slutter med disse, men den vil heller
> ikke acceptere "foo-bar.dk".

Det er vel fordi der ikke umiddelbart findes en character class
[a-z0-9\-\_]. Der findes evt. en smartere metode, men flg. virker dog
([a-z0-9]|-|_).

Man behøver tilsyneladende ikke escape - og _. Husk evt. også en case
insensitive modifier.

--
mvh Jakob Kirkegaard
http://jakir.dk

Tonni Aagesen (06-10-2002)
Kommentar
Fra : Tonni Aagesen


Dato : 06-10-02 12:11

"Jakob Kirkegaard" <jkir00@control.auc.dk> skrev i en meddelelse
news:anp4po$5q4$1@sunsite.dk...

> Det er vel fordi der ikke umiddelbart findes en character class
> [a-z0-9\-\_]. Der findes evt. en smartere metode, men flg. virker dog
> ([a-z0-9]|-|_).
>
> Man behøver tilsyneladende ikke escape - og _. Husk evt. også en case
> insensitive modifier.

Det er nødvendigt at escape - hvis den kommer efter en a-z, 0-9 etc. Jeg har
dog fået det til at køre med:

"(^[a-z0-9][a-z0-9_-]+[a-z0-9]){1,61}\.(dk|com|net|org|name|biz|info)$"

Denne fungerer næsten perfekt, bortset fra at en domænenavn på mere end 63
tegn smutter i gennem. Hvis domænenavnet er under 3 tegn, bliver den dog
stadig fanget.


--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>




Peter Brodersen (06-10-2002)
Kommentar
Fra : Peter Brodersen


Dato : 06-10-02 16:52

On Sun, 6 Oct 2002 13:11:04 +0200, "Tonni Aagesen"
<use.my@signature.please> wrote:

>"(^[a-z0-9][a-z0-9_-]+[a-z0-9]){1,61}\.(dk|com|net|org|name|biz|info)$"
>Denne fungerer næsten perfekt, bortset fra at en domænenavn på mere end 63
>tegn smutter i gennem. Hvis domænenavnet er under 3 tegn, bliver den dog
>stadig fanget.

Din {1,61}-range matcher mindst tre tegn hver gang. Dvs. der skal være
mindst tre tegn, og op til uendeligt mange (pga. + undervejs)

En mulighed er fx:

"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.(dk|com|net|org|name|biz|info|museum|mangeandre)$"

Underscores må ikke være en del af domænenavnet. Ovenstående
accepterer 1-63 tegn, hvor det første og sidste ikke kan inkludere
"-".

Det kunne dog også være relevant at acceptere domænenavne i flere
niveauer. Jeg ser dog bort fra:
- 63-tegns-detaljen
- @dk-adresser og lignende (ret + til *, hvis man også vil acceptere
disse)
- tilfælde, hvor folk opretter hosts med underscore i under deres
domæne

"^([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+(dk|com|net|org|name|biz|info|museum|mangeandre)$"

Mange diskussioner omkring validering af domænenavn (og
e-mail-adresse) kan dog ikke besvares absolut, men falder tilbage på
det præcise behov.
--
- Peter Brodersen

Tonni Aagesen (06-10-2002)
Kommentar
Fra : Tonni Aagesen


Dato : 06-10-02 17:15

"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:anpm8k$rjk$1@dknews.tiscali.dk...

> Din {1,61}-range matcher mindst tre tegn hver gang. Dvs. der skal være
> mindst tre tegn, og op til uendeligt mange (pga. + undervejs)

Jeps, der var den, og den virker:
"^[a-z0-9]([a-z0-9-]){1,61}[a-z0-9]\.(dk|com|net|org|name|biz|info)$"


> Mange diskussioner omkring validering af domænenavn (og
> e-mail-adresse) kan dog ikke besvares absolut, men falder tilbage på
> det præcise behov.

Disse behov synes jeg egentlig er rimelig godt definerede i mit første
indlæg.

Nu har jeg hørt forskellige ting om valide domæner. Er underscore tegnet
valid som del af et domæne eg. "foo_bar.tld" ?


--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>



Peter Brodersen (06-10-2002)
Kommentar
Fra : Peter Brodersen


Dato : 06-10-02 17:24

On Sun, 6 Oct 2002 18:14:42 +0200, "Tonni Aagesen"
<use.my@signature.please> wrote:

>> Mange diskussioner omkring validering af domænenavn (og
>> e-mail-adresse) kan dog ikke besvares absolut, men falder tilbage på
>> det præcise behov.
>Disse behov synes jeg egentlig er rimelig godt definerede i mit første
>indlæg.

Jeg kan ikke se noget formål nævnt i det oprindelige indlæg. Handler
det at tjekke om der kan sendes en e-mail til en bestemt adresse? Er
det vigtigt om domænet findes i forvejen? Hvad skal det bruges til?

>Nu har jeg hørt forskellige ting om valide domæner. Er underscore tegnet
>valid som del af et domæne eg. "foo_bar.tld" ?

Phew, problemstillingen kompliceres også af formålet, og det er det,
der gør diskussioner om hvad, et hostnavn må indeholde, ret
komplicerede. Mht. webservere kan det både være relevant at finde
laveste fællesnævner i dns-specifikationerne samt
http-specifikationerne. Kigger man på andre protokoller, er der
sikkert andre ting at tage hensyn til.

--
- Peter Brodersen

Tonni Aagesen (06-10-2002)
Kommentar
Fra : Tonni Aagesen


Dato : 06-10-02 18:34

"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:anpo4o$rmd$1@dknews.tiscali.dk...

> Jeg kan ikke se noget formål nævnt i det oprindelige indlæg. Handler
> det at tjekke om der kan sendes en e-mail til en bestemt adresse? Er
> det vigtigt om domænet findes i forvejen? Hvad skal det bruges til?

Jeg har skam ikke beskrevet et formål - men et behov. Jeg gentager lige:

1) domænenavnet kun indeholder valide tegn a-z og 0-9 samt "-" og "_".
2) domænenavnet ikke starter eller slutter med "-" eller "_".
3) korrekt tld.

Men formålet er at jeg leger med en klasse til whois forespørgsler på
bestemte tld's. Betyder det noget for min regex?

> Phew, problemstillingen kompliceres også af formålet, og det er det,
> der gør diskussioner om hvad, et hostnavn må indeholde, ret
> komplicerede. Mht. webservere kan det både være relevant at finde
> laveste fællesnævner i dns-specifikationerne samt
> http-specifikationerne. Kigger man på andre protokoller, er der
> sikkert andre ting at tage hensyn til.

Ja, det kan jeg godt se. Der er tale om domæner til http... Er underscore
valide i dette tilfælde?


--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408951
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste