/ 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
Reg.exp.
Fra : Thomas Lindgaard


Dato : 02-11-04 12:13

Hejsa

Er der en der kan skrive et reg.exp. der kan lave:

$str = '<a href="mailto:person@server.dk">person</a> blabla
person@server.dk mere blabla';

om til:

$str = '<a href="mailto:person@server.dk">person</a> blabla <a
href="mailto:person@server.dk">person</a> mere blabla';

Eller alternativt, fortælle mig om jeg er ude i noget som ikke kan laves
med regulære udtryk...

Mvh.
/Thomas

 
 
Ulrik Nielsen (02-11-2004)
Kommentar
Fra : Ulrik Nielsen


Dato : 02-11-04 13:15

Thomas Lindgaard wrote:
> Hejsa
>
> Er der en der kan skrive et reg.exp. der kan lave:
>
> $str = '<a href="mailto:person@server.dk">person</a> blabla
> person@server.dk mere blabla';
>
> om til:
>
> $str = '<a href="mailto:person@server.dk">person</a> blabla <a
> href="mailto:person@server.dk">person</a> mere blabla';
>
> Eller alternativt, fortælle mig om jeg er ude i noget som ikke kan laves
> med regulære udtryk...

det kan du sikkert godt, men det giver ingen mening..

> $str = '<a href="mailto:person@server.dk">person</a> blabla
> person@server.dk mere blabla';

og så $str .= $str;



--
ulrik nielsen |
-----------------+---------------------------------------------------
quote or the day | The keyboard isn't plugged in
from bofh | http://www.cs.wisc.edu/~ballard/bofh/

Thomas Lindgaard (04-11-2004)
Kommentar
Fra : Thomas Lindgaard


Dato : 04-11-04 00:53

On Tue, 02 Nov 2004 13:14:57 +0100, Ulrik Nielsen wrote:

>> Er der en der kan skrive et reg.exp. der kan lave:
>>
>> $str = '<a href="mailto:person@server.dk">person</a> blabla
>> person@server.dk mere blabla';
>>
>> om til:
>>
>> $str = '<a href="mailto:person@server.dk">person</a> blabla <a
>> href="mailto:person@server.dk">person</a> mere blabla';
>>
>> Eller alternativt, fortælle mig om jeg er ude i noget som ikke kan laves
>> med regulære udtryk...
>
> det kan du sikkert godt, men det giver ingen mening..

Øhm - hvorfor giver det ingen mening?

Jeg ønsker et regulært udtryk, som kan identificere email-adresser i en
tekst og lave dem om til klikbare links. Email-adresser der allerede ER
klikbare (altså står i <a href="mailto:...">), må den ikke røre ved.

>
> > $str = '<a href="mailto:person@server.dk">person</a> blabla
> > person@server.dk mere blabla';
>
> og så $str .= $str;

Hvad mener du?

Mvh.
/Thomas

Janf (04-11-2004)
Kommentar
Fra : Janf


Dato : 04-11-04 10:46

Thomas Lindgaard wrote:
> Jeg ønsker et regulært udtryk, som kan identificere email-adresser i en
> tekst og lave dem om til klikbare links. Email-adresser der allerede ER
> klikbare (altså står i <a href="mailto:...">), må den ikke røre ved.
Aha!

1. Links skal aldrig røres, uanset om de indeholder mailadresser eller
noget andet. Så hvis .... står for hvad som helst skal nedenstående ikke
røres.
<a ....>....</a>

2. Mailadresser skal laves til et link, hvis de ikke er det.
janf@janf.dk skal ændres til
<a href="mailto:janf@janf.dk">janf@janf.dk</a>

3. Mailadresser på formen
"Jan Fjeldmark" <janf@janf.dk>
skal behandles specielt. Du kan evt. vælge kun at se på den sidste del
af adresser på denne form. Og så reduceres problemet her i pkt. 3 til
det i pkt. 4.
Hvis du vælger dette, bliver den nævnte adresse til
"Jan Fjeldmark" <a href="mailto:janf@janf.dk">janf@janf.dk</a>
det ville være bedre om den blev til
<a href="mailto:janf@janf.dk">Jan Fjeldmark</a>.

4. Hvis mailadressen står i skarpe parenteser som i <aaa@bbb>, skal
disse fjernes før adressen laves til et link.
Altså <janf@janf.dk> bliver til
<a href="mailto:janf@janf.dk">janf@janf.dk</a>

5. Hvis der står mailto: skal dette fjernes før adressen laves til et
ling og får mailto: tilføjet.
Altså mailto:janf@janf.dk bliver til
<a href="mailto:janf@janf.dk">janf@janf.dk</a>
og det gør <mailto:janf@janf.dk> også når pkt 4 og 5 kombineres.

6. Syntaksen for mailadresser er beskrevet i rfc822 afsnit 6
<http://www.freesoft.org/CIE/RFC/822/41.htm>.
Følgende syntaks vil fange de fleste mailadresser, men bestemt ikke alle:
[a-zA-Z0-9_\.]*@[a-zA-Z0-9_\.]*

Nu er opgaven klarlagt nogenlunde. Så mangler vi bare en haj til
regulære udtryk. Håber der er én som gider.

--
Jan Fjeldmark mailto:janf@janf.dk http://janf.dk/
Hvad du end tror du er, så er du altid meget mere.

Christian Hansen (05-11-2004)
Kommentar
Fra : Christian Hansen


Dato : 05-11-04 15:01

Janf wrote:

> 6. Syntaksen for mailadresser er beskrevet i rfc822 afsnit 6
> <http://www.freesoft.org/CIE/RFC/822/41.htm>.
> Følgende syntaks vil fange de fleste mailadresser, men bestemt ikke alle:
> [a-zA-Z0-9_\.]*@[a-zA-Z0-9_\.]*

Nemlig. I følge ovenstående udtryk er "@" en gyldig emailadresse :). I
øvrigt behøver man ikke at escape . i en tegnklasse.

Jeg har fundet følgende udtryk, som jeg ofte bruger til at matche
emailadresser med. Heller ikke det er perfekt, men det er godt alligevel:


/^[a-z0-9][a-z0-9._-]*[a-z0-9]@[a-z0-9]([a-z0-9.-]*[a-z0-9])?\.[a-z]{2,4}$/i

Ovenstående tjekker at en enkelt streng er en emailadresse - fjern ^ og
$ fra enderne, så kan den bruges på en tekstklump.

Mvh Christian

Peter Brodersen (05-11-2004)
Kommentar
Fra : Peter Brodersen


Dato : 05-11-04 15:15

On Fri, 05 Nov 2004 15:01:23 +0100, Christian Hansen
<chrsen@fundanemt.com> wrote:

>/^[a-z0-9][a-z0-9._-]*[a-z0-9]@[a-z0-9]([a-z0-9.-]*[a-z0-9])?\.[a-z]{2,4}$/i
>
>Ovenstående tjekker at en enkelt streng er en emailadresse - fjern ^ og
>$ fra enderne, så kan den bruges på en tekstklump.

Folk gør sig en bjørnetjeneste, når de prøver at "skære ind til
benet". Din tillader fx ikke .museum-adresser, ejheller
e-mail-adresser, der kun har ét tegn før @'et, men omvendt set
tillader det andre mærkelige konstellationer, fx foo...bar.dk

RFC822-referencen, som ofte er udbredt i forbindelse med
e-mail-adresser, dækker tillige hele headeren, fx (uden gåseøjne):
"Peter Brodersen <usenet@ter.dk>" - og typisk er det kun en delmængde,
man er interesseret i (ejheller er man interesseret i at give mulighed
for kommentarer og lignende som en del af e-mail-adressen - hvis jeg
husker (forældede) RFC822 korrekt).

For det regulære udtryks vedkommende ville jeg nok gøre det mere
simpelt, idet udtrykket alligevel normalt ikke implementerer alle
tld'er - og hvis man alligevel laver et sådan udtryk, "for at være så
præcis som muligt", så skyder man sig i foden, fordi listen over
tld'er alligevel bliver forældet med tiden. Der er intet så slemt som
en gammel, bedrevidende webformular, der insisterer på at et eller
andet, som tydeligvis findes (og som scriptet bare kunne kigge efter),
altså bare ikke findes.

Som jeg også nævner i <news:bolifk$hqt$1@dknews.tiscali.dk> , så
findes "overdreven præcision"-problemet i mange facetter. Enhver
websmed, der før 2004 i forskellige projekter har lavet webforms med
en endelig og udtømmende liste over postnumre, som en bruger kan vælge
fra (uden mulighed for at vælge udover hvad listen foreslår), vil nu
have hægtet alle personer i Dyssegård (postnr 2870) fra, blot fordi
det postnummer først er kommet til i år.


Så helt grundlæggende må man spørge sig selv, hvad man er ude på.
Omdannelse af e-mail-adresser til links er jo som regel ikke mere end
bare en mulig, hjælpende hånd.

--
- Peter Brodersen

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

Månedens bedste
Årets bedste
Sidste års bedste