Avatar billede Towle Nybegynder
04. december 2014 - 12:36 Der er 9 kommentarer og
1 løsning

Find og fjern kyperlinks i HTML-tekst

Jeg har en masse linjer a la denne:

<td colspan="3"><a href="joseph-haydn">Joseph Haydn</a> (1732-1809)</td>

Den skal erstattes med:

<td colspan="3"><span class="name">Joseph Haydn</span> (1732-1809)</td>

Det skal siges, at det ikke er altid der optræder en tidsperiode (0000-0000).
Avatar billede jakobdo Ekspert
04. december 2014 - 20:58 #1
Mit bud er en regexp ala: <a href="[^"]+">(.+?)<\/a> Kan matche første del..

Og det "replacer" du så "bare" med:

<span class="name">$1</span>
Avatar billede Towle Nybegynder
05. december 2014 - 05:37 #2
Den erstatter med <span class="name">$1</span> og ikke <span class="name">Joseph Haydn</span>. Skulle $1 ikke netop indsætte/bevare det navn der stod der i forvejen? Ja, jeg ved det ikke; jeg gætter bare.

Det trækker op til point. Skal jeg så sætte prik i "Svar (til løsninger og poingivning)"?
Avatar billede jakobdo Ekspert
05. december 2014 - 10:55 #3
Hvilket sprog arbejder du i?

Denne virker i hvert fald i php:

$input = '<td colspan="3"><a href="joseph-haydn">Joseph Haydn</a> (1732-1809)</td>';

echo preg_replace('%<a href="[^"]+">([^<]+)</a>%', '<span class="name">$1</span>', $input);
Avatar billede Towle Nybegynder
05. december 2014 - 11:25 #4
Jeg bruger "Søg/Erstat" med RegEx i mit HTML-editor (Komodo).

Jeg har nu forsøgt det samme i TextWrangler, hvor jeg kan sætte flueben i "Grep". Samme resultat.
Avatar billede jakobdo Ekspert
05. december 2014 - 11:34 #5
Nogle gange har de andre syntakser.
Så det kan være svært at give dig en løsning så.
Avatar billede Towle Nybegynder
05. december 2014 - 14:01 #6
<span class="name">$1</span> skal (it mit tilfælde) være:

<span class="name">\1</span>, så virker det.

Uden din hjælp var jeg dog aldrig kommet så langt, at jeg selv kunne google det sidste, så du får selvfølgelig point :-)
Avatar billede Towle Nybegynder
05. december 2014 - 14:03 #7
<span class="name">$1</span> skal (it mit tilfælde) være:

<span class="name">\1</span>, så virker det.

Uden din hjælp var jeg dog aldrig kommet så langt, at jeg selv kunne google det sidste, så du får selvfølgelig point :-)
Avatar billede Towle Nybegynder
05. december 2014 - 14:04 #8
Nej, det med pointgivning i dette forum KAN jeg bare ikke finde ud af :-(
Avatar billede jakobdo Ekspert
05. december 2014 - 14:13 #9
Jeg skal først smide et svar
Avatar billede jakobdo Ekspert
08. december 2014 - 08:42 #10
Takker for point.
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

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