Avatar billede everclear Praktikant
13. juli 2008 - 01:02 Der er 6 kommentarer og
1 løsning

Lidt mere Regular Expression

Jeg sidder med et lille problem mht. regular expressions.
Jeg har en class i C#, der gerne skulle tage imod en input-string, der indeholder noget HTML-kode.
Det jeg gerne vil have er et regular expression, der løber HTML-koden igennem, finder alle <img>-tags og så retter src-attributen til.

F.eks. hvis der dukker følgende op i HTML-koden:

<img src="Images/Testbillede.jpg" />

så vil jeg gerne have src'en omskrevet til f.eks.:

<img src="http://www.mitsite.dk/Images/Testbillede.jpg" />

men jeg er en smule på bar bund omkring hvordan jeg gør det. Jeg har prøvet nogle forskellige regular expressions, der hiver src'en ud, men jeg løber ind i nogle problemer.

Nogen der lige kan hjælpe med?
Avatar billede everclear Praktikant
13. juli 2008 - 01:04 #1
OBS:

Det eneste jeg skal bruge fra det originale <img>-tag er navnet på billedfilen. Det vil sige i <img src="Images/Testbillede.jpg" /> er det kun "Testbillede.jpg" jeg skal beholde. Resten skal erstattes med en anden url:

string url = "http://www.mitsite.dk/Billeder/" + billedNavn;

Håber det er tydeligt nok:-)
Avatar billede arne_v Ekspert
13. juli 2008 - 04:02 #2
Prøv:

string s2 = Regex.Replace(s, "(?<=src\\s*=\\s*['\"])([^'\"/]*/)*([^'\"\\./]+\\.[^'\"/]+)(?=['\"])", "bar/$2", RegexOptions.IgnoreCase);
Avatar billede arne_v Ekspert
13. juli 2008 - 04:03 #3
Test:

bla <img src='foo/a.gif'> bla <IMG SRC = 'FOO/B.GIF'> bla
bla <img src='bar/a.gif'> bla <IMG SRC = 'bar/B.GIF'> bla
Avatar billede everclear Praktikant
13. juli 2008 - 13:54 #4
Arne du er min nye helt:-)
Det spiller bare som det skal...1000 tak. Smid et svar, så er der point:-)
Avatar billede everclear Praktikant
13. juli 2008 - 14:09 #5
Kunne dette expression evt. udvides således, at det ikke kun finder <img>-tags, men alle billeder på siden (inkl. background-images)?
Avatar billede arne_v Ekspert
13. juli 2008 - 15:08 #6
svar
Avatar billede arne_v Ekspert
13. juli 2008 - 15:10 #7
Hvis du sætter background image med:

<body background="...">

så må det være nemt at lave en replace mere med background= fromfor src=.

Hvis du bruger CSS, så tror jeg at det er lidt mere tricky.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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