Avatar billede larsen1 Nybegynder
27. maj 2002 - 13:36 Der er 11 kommentarer og
2 løsninger

Regular expression til link

Jeg har brug for en funktion, der kan løbe en string igennem, og checke for links uden target, og erstatte dem med et link med target blank.

eks.
<a href="http://www.simonlarsen.dk">
bliver til
<a href="http://www.simonlarsen.dk" target="_blank">

Jeg håber der er en snedig fætter, der kan hjælpe!

/simon
Avatar billede -master-d- Nybegynder
27. maj 2002 - 17:17 #1
når du siger string skal det så forstås sådan at dine links er i en string ?
Avatar billede larsen1 Nybegynder
27. maj 2002 - 19:20 #2
Yes - det er en lang string med links imellem. Det skal lige siges, at der kan optræde links med mailto, som selvfølgelig ikke skal have target på.
Avatar billede -master-d- Nybegynder
27. maj 2002 - 21:14 #3
ok ser lige på det til imorgen, ok.
Avatar billede -master-d- Nybegynder
27. maj 2002 - 22:16 #4
er det muligt jeg kan se stringen ellers kan det være jeg laver noget forkert jo, ikk'.
Avatar billede larsen1 Nybegynder
27. maj 2002 - 22:23 #5
Stengen varierer, da folk selv skal kunne taste den ind, men den ku' se ud som følger:

<b>Velkommen</b><br><img src='images/upstor/pjerrot.jpg' width='250' height='175' align='right'><SPAN class="tekst2">Det er nu <STRONG>en fornøjelse</STRONG> at kunne sige velkommen her på <EM>siden</EM>. <A href="www.simonlarsen.dk</A></SPAN></P>" target="_blank">http://www.simonlarsen.dk">www.simonlarsen.dk</A></SPAN></P>
<P><SPAN class="mellemrubrik">Du kan kontakte mig på simon@simonlarsen.dk</SPAN></P><P><SPAN class="tekst2">eller kig på <A href="http://www.simonlarsen.dk" target="_blank">www.simonlarsen.dk</A></SPAN></P>

Her er det kun det ene link til en anden side, der skal have tilføjet en target.

På forhånd tak!
Avatar billede -master-d- Nybegynder
28. maj 2002 - 11:53 #6
Jeg har lidt problemer, det jeg søger efter er ligesom man har i SQL og ADO et såkalst wildcard (% og _) som man kan bruger til at sætte ind så ville den jo være nem nok hvis man kunne det.

Så kunne man bare lave et eller andet med <a% target=? blabla derud af men det tror jeg faktisk ikke man kan i asp undtagen hvis man bruger en sql-streng (altså en database) og det bliver langsommeligt for hjemmesiden tror jeg, men ved det ikke. For skal din streng ikke ind i en database?
Avatar billede larsen1 Nybegynder
28. maj 2002 - 12:22 #7
Jammen det kan man med regular expressions. Det var det spørgsmålet gik på!
Avatar billede -master-d- Nybegynder
28. maj 2002 - 12:44 #8
Ja, har faktisk læst mig til.
Avatar billede larsen1 Nybegynder
28. maj 2002 - 13:01 #9
Min streng SKAL ind i en database. Det gør intet at det er langsomt, for det er kun på administrationsdelen at erstatningen skal foregå.

Enhver løsning er acceptabel, bare det virker.
Avatar billede -master-d- Nybegynder
28. maj 2002 - 13:09 #10
Jeg må sige at det ser ud til at være et stort emne og rimelig svært at tage fat på, hvilket nok er derfor at du stiller spørgsmålet, men jeg som lovet prøvet lidt og prøv lige at tjek om den her skulle virker

streng = "<b>Velkommen</b><br><img src='images/upstor/pjerrot.jpg' width='250' height='175' align='right'><SPAN class="tekst2">Det er nu <STRONG>en fornøjelse</STRONG> at kunne sige velkommen her på <EM>siden</EM>. <A href="www.simonlarsen.dk</A></SPAN></P>" target="_blank">http://www.simonlarsen.dk">www.simonlarsen.dk</A></SPAN></P>
<P><SPAN class="mellemrubrik">Du kan kontakte mig på simon@simonlarsen.dk</SPAN></P><P><SPAN class="tekst2">eller kig på <A href="http://www.simonlarsen.dk" target="_blank">www.simonlarsen.dk</A></SPAN></P>"

If "<a href.*?><\/a>" = "<a href.*?></a>" Then
Streng = Replace(streng,"<a href.*?></a>","a href.*? target="_self"></a>"
End If

Jeg ved det ikke helt, men den skulle ihvertfald gerne indsætte et target.
Derfor laver jeg det kun som en kommentar.
Avatar billede -master-d- Nybegynder
28. maj 2002 - 14:36 #11
har fundet ud af at den ikke virker.
Avatar billede -master-d- Nybegynder
28. maj 2002 - 18:08 #12
Jeg tænkte på om noget lign. det her ikke kunne virke

<%
Set regEx = New RegExp  ' Create a regular expression.
regEx.Pattern = "<a href="?" target="?">"
regEx.IgnoreCase = True  ' Set case insensitivity.
regEx.Global = True  ' Set global applicability.
Set Matches = regEx.Execute(Streng)  ' Execute search.

Set regEx2 = New RegExp  ' Create a regular expression.
regEx2.Pattern = "<a href="(?)">"
regEx2.IgnoreCase = True  ' Set case insensitivity.
regEx2.Global = True  ' Set global applicability.
Set Matches2 = regEx2.Execute(Streng)  ' Execute search.

Streng = "<a href="www.delle.com">linket<a/>"

If Matches.Count = Matches2.Count then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN"

SQL = "Insert into tabel(kolonne) values('" & Streng & "')"
Conn.Execute(SQL)

Conn.Close
Set Conn = Nothing

Else
Do While Not Mathches.Count < Matches2
    Streng = Replace(Streng, <a href=""" & matches2.value & """>, <a href=""" & matches2.Value & """ target="Rammen">
Loop

If Matches.Count = Matches2.Count then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN"

SQL = "Insert into tabel(kolonne) values('" & Streng & "')"
Conn.Execute(SQL)

Conn.Close
Set Conn = Nothing
End If

Response.Write "" & Streng & ""
end function

%>

Måske er der lidt fejl men som sagt er det ikke noget jeg bruger normalt.
Avatar billede larsen1 Nybegynder
30. maj 2002 - 00:29 #13
Hmmmm - det ser slet ikke ud til at virke. Det ligner heller ikke de reg. expr. jeg tidliger har set. De så sådan ud:
"<(.*)>.*<\/\1>" = et html tag.
Jeg kan bare ikke skrive dem.

Jeg tror jeg lukker her, og prøver en i reg. expr. kategorien. Du får halvdelen af point for et ihærdigt forsøg. =)

/simon
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