Toon posts:

[ASP] een link wijzigen met reguliere expressies

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende tekst

"My phone <a href='doc.asp?contentid=2'>.,/123345;'[]-=+_//</a> is (123)654-3211. Sue's <a href='http://www.carpenter.nl'>number</a> number is (873)392-1222."

Hier uit moet ik de twee links wijzigen. Als er een http://, ftp://, mailto://., etc. in de link zit dan moet er "target='_blank'" bijkomen in de <a. Als dit niet het geval is dan moet er "target='_self" bijkomen.

ik heb de volgende reguliere expressie
ASP:
1
<a href='.*'>.*</a>
Deze haalt alle tekst vanaf de eerste <a tot de laatste </a> op. Dit moet dus niet gebeuren. Maar wat is dan de juiste RE?!?! Ik weet het echt niet meer!

Mijn 2e vraag is hoe je nou het beste die targets er in kan zetten zonder dat het echt te veel moeite kost.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:16

crisp

Devver

Pixelated

in php zou ik het zo doen:

PHP:
1
2
$text = preg_replace('/(<a .*?href=[\'"](\w{3,5}:\/\/|mailto:).*?)>/is', '$1 target="_blank">', $text);
$text = preg_replace('/(<a .*?href=[\'"](?!(\w{3,5}:\/\/|mailto:)).*?)>/is', '$1 target="_self">', $text);


dit zou denk ik in ASP ook moeten werken (de i en s modifier staan voor line-spanning en case-insensitive matching)
de 2e is denk ik overbodig omdat het default target toch meestal de pagina zelf is; anders zou je nog een base href op kunnen geven in je <head>

[ Voor 43% gewijzigd door crisp op 15-05-2003 00:19 ]

Intentionally left blank