Avatar billede mekaniker Nybegynder
24. april 2003 - 15:24 Der er 2 kommentarer og
1 løsning

Problemer med Reg.Exp

Jeg har et felt i en access db som defineret som "note"

Når jeg skriver dette felt ud til min asp side, har jeg brugt et script til at lave skrevne links om til klikbare links.

Da det jo et et note felt bruger jeg denne linie for at få de korrekte linieskift.

broedtekst = Replace(broedtekst&"", vbCrLf, "<BR>")

Jeg har et problem hvis man skriver en stribe links som starter med http:// så virker det fint.

men hvis jeg kun skriver www.test.dk så laver den ikke linieskiftet.

Hele scriptet:
<%
Function LinkString2(strInput)
Set objRegExpHTTP1 = New RegExp
Set objRegExpHTTP2 = New RegExp
Set objRegExpMAILTO1 = New RegExp

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

objRegExpHTTP1.Global = True
objRegExpHTTP2.Global = True
objRegExpMAILTO1.Global = True

objRegExpHTTP1.IgnoreCase = True
objRegExpHTTP2.IgnoreCase = True
objRegExpMAILTO1.IgnoreCase = True

strOutput = objRegExpHTTP1.Replace(strInput, " <a href='$1$2' target='_blank'>$1$2</a> ")
strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a href='http://$2' target='_blank'>$2</a> ")
strOutput = objRegExpMAILTO1.Replace(strOutput, "<a href=""mailto:$1"">$1</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")
objRegExpMAILTO1.Pattern = "(<br>|[,.)\]\}])(</a>)"
strOutput = objRegExpMAILTO1.Replace(strOutput, "$1")

Set objRegExpMAILTO1 = Nothing
Set objRegExpHTTP2 = Nothing
set objRegExpHTTP1 = Nothing

LinkString2 = strOutput
End Function
%>

//Mekaniker
Avatar billede mekaniker Nybegynder
24. april 2003 - 15:30 #1
også skriver jeg det ud sådan
<%
broedtekst =  LinkString2(rs1("broedtekst"))
broedtekst = Replace(broedtekst&"", vbCrLf, "<BR>")
%>
<table width="410" height="230" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td valign="top"><div align="left" class="broed"><%= broedtekst %></div></td>
  </tr>
</table>
Avatar billede eagleeye Praktikant
24. april 2003 - 16:24 #2
Prøv at bytte rundt på de to linjer

broedtekst =  LinkString2(rs1("broedtekst"))
broedtekst = Replace(broedtekst&"", vbCrLf, "<BR>")


Sådan her:
broedtekst = Replace(broedtekst&"", vbCrLf, "<BR>")
broedtekst =  LinkString2(rs1("broedtekst"))


Da link laveren tager højde for <br> så vidt jeg kan se. Det er forkel på hvordan links findes. De som starter med http:// bliver fundet her:
objRegExpHTTP1.Pattern = "(http|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)"

De som er uden bliver fundet her:
objRegExpHTTP2.Pattern = "(^|[^\/])(www[^\.\s]?\.[\w\._-]+\.[A-Za-z]{2,3}[\w\S]*)"
og den kan tage en karakter for meget med og det er så vbCrLf så hvis du laver vbCrLf om til <br> inden tror jeg det virker.
Avatar billede mekaniker Nybegynder
24. april 2003 - 17:09 #3
Det virkede, mange tak for hjælpen.
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