Avatar billede woodbase Nybegynder
13. august 2008 - 14:19 Der er 5 kommentarer og
1 løsning

Erstat tekst, men ikke i links

Hej med jer...

Jeg brygger på en ordbogsfunktion, som skal kunne highlighte de første 2 (eller variable) forekomster af et ord på en side.

Eks. Jeg vil sætte min ordbogsfunktion på ordet hest.
Peter har en hest, Peter er meget glad for sin hest. Peters hest er stor.

Det er sådan ser til at ordne. Pt. splitter den på hest.

var txtArr = doc.split(/hest/) og så stykkes det sammen igen i en løkke.

Problemet opstår når hest indgår i et link:
www.peter.xx/hest.aspx eller www.peter.xx/god_hest/default.aspx

Så skal der ikke splittes.

Forslag til ind replace funktion der ikke medtager links?
Avatar billede jokkejensen Novice
13. august 2008 - 15:16 #1
Brug regular expression til at matche med..

/JJ
Avatar billede roenving Novice
14. august 2008 - 00:40 #2
-- regular expressions er en rigtig god metode til at teste og matche strenge, men jeg kunne formode, at det i ovenstående eksempel kunne være en ide at lave en splitting, der tog højde for sluttegnet på et tag, og kun erstattede, hvis det kom før starttegnet, f.eks.

<script type="text/javascript">
function changeHest(){
var htmltext = "Peter har en hest, Peter er meget glad for sin hest. Peters hest er stor.\n\n<a href='www.peter.xx/hest.aspx'>peter</a><br><a href='www.peter.xx/god_hest/default.aspx'>peter god</a>";

var change = ["hest","horse"];
var cText = htmltext.split(">");
for(i=0,im=cText.length;im>i;i++){
  cText[i] = cText[i].split("<");
  cText[i][0] = cText[i][0].replace(new RegExp(change[0], "g"), change[1]);
  cText[i] = cText[i].join("<");
}
return cText.join(">");
}
alert(changeHest());
</script>

-- når det så skal være to forekomster skal der selvfølgelig arbejdes videre på eksemplet, men du kan forhåbentlig se ideen !-)
Avatar billede woodbase Nybegynder
05. september 2008 - 13:00 #3
hep - løsningen blev at lave et RexExp, som kan håndtere det, hvis det efterfølgende tegn er et whitespace.

Jeg er ret sikker på et RegExp kan løse det hele, men jeg er ikke skarp nok til at skrive dem.

Så jokkejensen har vel egentlig svaret - omen det var lidt tyndt ;-) og at jeg egentlig vidste det, men ledte efter noget mere konkret.

Send et svar jokke ;-)
Avatar billede woodbase Nybegynder
12. februar 2009 - 00:06 #4
Løsningen endte faktisk med at blive lavet om - stadig med RegExp men nu serverside fra .Net
Avatar billede roenving Novice
09. marts 2009 - 18:41 #5
Lyder godt !-)

Velbekomme '-)
Avatar billede woodbase Nybegynder
10. august 2010 - 09:43 #6
Fik aldrig svar fra JJ - så pointene er givet til roenving for indsatsen...
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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