Avatar billede davidfossil Nybegynder
12. oktober 2002 - 15:03 Der er 5 kommentarer og
1 løsning

RegExp

Dette pattern finder urls i en string :

objRegExp.Pattern = "(\bhttp\:\/\/)?(\S+\.[a-z][a-z]+\b)(\/\S+\b)?(\?\S+\b)?"

Problemet er bare at den også finder fx "ja...øh..men" og gør det til et link...
det vil jeg ikke have, men jeg vil gerne have at fx "ost.dk" bliver til et link ... dvs. der skal ikke kræves http eller www før den reagerer. kan man evt. blot få den til at udelukke hvis der er 2 punktummer i træk? så vil jeg stadig få link hvis en eller anden skriver "hej.jeg er en ko", men det er trods alt mere sjældent...

evt. en guide til RegExp ... jeg fatter ikke så meget af det ...

på forhånd tak =)
Avatar billede exp-ralle Nybegynder
12. oktober 2002 - 15:09 #1
Følger lige med her...
Avatar billede erikjacobsen Ekspert
12. oktober 2002 - 15:20 #2
Du kan jo prøve (utestet)

objRegExp.Pattern = "(\bhttp\:\/\/)?([a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z][a-z]+\b)(\/\S+\b)?(\?\S+\b)?"
Avatar billede davidfossil Nybegynder
12. oktober 2002 - 16:35 #3
dur ikke
Avatar billede erikjacobsen Ekspert
12. oktober 2002 - 16:46 #4
Dejlig informativ besked. Jeg kender ikke alle de tilfælde
du har tænkt dig at prøve - og jeg gider ikke selv prøve
i ASP. Men det virker da fint som regulært udtryk i Perl i
mange tilfælde.
Avatar billede eagleeye Praktikant
12. oktober 2002 - 17:56 #5
Du vil ikke med Et Pattern kunne lave tekst om til link.. men alle de muliheder man kan sktrive et url på..:
http://www.hej.dk
hej.dk
hej.dk/minfil.asp?d=34er&e=fcv4

mmf..

Tag et kig på dette vinder script fra netcoder.dk:
http://www.netcoders.dk/sources.asp?mode=view_source&cat_id=9&id=859&tech_id=1

og her er alle de scripts som deltog i onkurencen.:
http://www.netcoders.dk/sources.asp?mode=view_source&cat_id=9&id=860&tech_id=1

Der ud over kommer email adresse skal de også lave om??

Jeg bruge selv denne function som bruger regexp.. Den tager højde for flere forskellige ting som man kan støde ind i når man lave links om. Den passer til mit behov for link konvertering, men det er ikke sikkert på har samme bwhov men du kan jo prøve den :)

Function LinkString(strInput)
Set objRegExpHTTP1 = New RegExp
Set objRegExpHTTP2 = New RegExp
Set objRegExpEMail = New RegExp

objRegExpHTTP1.Pattern = "(http|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)"
objRegExpHTTP2.Pattern = "(^|[^\/])(www[^\.\s]?\.[\w\._-]+\.[A-Za-z]{2,3}[\w\S]*)"
objRegExpEMail.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)"

objRegExpHTTP1.Global = True
objRegExpHTTP2.Global = True
objRegExpEMail.Global = True

objRegExpHTTP1.IgnoreCase = True
objRegExpHTTP2.IgnoreCase = True
objRegExpEMail.IgnoreCase = True

strOutput = objRegExpEMail.Replace(strInput, " <a href='mailto:$1'>$1</a> ")
strOutput = objRegExpHTTP1.Replace(strOutput, " <a href='$1$2' target='_blank'>$1$2</a> ")
strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a href='http://$2' target='_blank'>$2</a> ")

objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])('>)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(' target=)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(</a>)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2$1")

Set objRegExpHTTP2 = Nothing
set objRegExpHTTP1 = Nothing
Set objRegExpEMail = Nothing

LinkString = strOutput
End Function
Avatar billede erikjacobsen Ekspert
12. oktober 2002 - 18:16 #6
Nu bad han ikke om mailto, men den simple omformning han beder om kan i Perl
laves i en enkelt sætning. Vistnok. Afhængigt af hvor meget der skal
tjekkes for.

$x="sadasdasd asd.as.as.asd  asdad asd..qasd asd";
$x=~s/(\bhttp\:\/\/)?(([a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z][a-z]+\b)(\/\S+\b)?(\?\S+\b)?)/<a href="http:\/\/\2">\2<\/a>/g;
print "$x\n";

Men det er selvfølgelig spørgsmålet uvedkommende...:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester