Avatar billede jezil Nybegynder
13. januar 2006 - 11:53 Der er 9 kommentarer og
1 løsning

Hvordan laver man en metode der viser link skrevet i en tekst

ASP @ JAVASCRIPT

Jeg har lavet en teksteditor, hvor man imellem teksten kan indtaste et link.
Mine overvejelser har været, om linket skulle fremstå som selve URL'en - ligesom når man her på eksperten tilføjer et link i et svar.
Eller skal linket have et navn man selv kan vælge.
Jeg valgte det sidste.
Min syntax i teksteditoren er følgende: <link>navn;URL</link>

Eksempel:
<link>Eksperten.dk;http://www.eksperten.dk</link>
   
Så skulle teksten fremstå som det endelige resultat på denne måde: <a href="http://www.eksperten.dk">Eksperten.dk</a>
   
Koden virker også helt fint indtil....
Når ? kommer ind i billedet.
Eks: http://www.moesmus.dk/my.php?sub=77&language=0 hvor spørgsmål indgår i URL'en
Så kløjes replace-funktionen i det, og laver ikke det, den får besked på. Resultatet er at min whileløkke fortsætter i det uendelige.


Så mit 60point sprg er hvordan laver man en metode der ignorere syntaxudtryk som ? er.
   
-----KODE------------------------------------------------------------------------------

// "nfo" er String-variablen der indeholder teksten hvor i linkene er.
   
    var l = true;              // Stopper whileløkke
    var ltmp1;                  // Tal, som peger på første tegn i linket (<link>)
    var ltmp2;                  // Tal, som peger på sidste tegn i linket (</link>)
    var subl = new String();    // String der indeholder teksten mellem <link> og </link>
    var ln;                    // Array der indeholder navn og URL. [0] = navn, [1] = URL




  while(l) {
    ltmp1 = nfo.indexOf("<link>");
      if(ltmp1 >= 0) {
        ltmp2 = nfo.indexOf("</link>");
        if(ltmp2 > 0) {
        subl = nfo.substring(ltmp1, (ltmp2)+7) + "";
        if(subl.indexOf(";") > 0) {
        ln = subl.split(";");
          if(ln[1].length > 7) {
            ln[0] = ln[0].substring(6, ln[0].length);
            ln[1] = ln[1].substring(0, (ln[1].length)-7);
            nfo = nfo.replace(subl, "<a href='" + ln[1] + "' target='new' class='plainAtext'>" + ln[0] + "</a>");
          }
          else l=false;
        }
        else l=false;
        }
        else l=false;
      }
    else l=false;
  }

---------------------------------------------------------------------------------------
Avatar billede mm12010 Nybegynder
13. januar 2006 - 13:12 #1
det evt oz gøres således, hvis ikke der er andre faktorer end de ovenstående der skal tages i betragtning:

<%
str="Jeg har lavet en teksteditor, hvor man imellem teksten kan indtaste et link.Mine overvejelser har været, om linket skulle fremstå som selve URL'en - ligesom når man her på eksperten tilføjer et link i et svar.Eller skal linket have et navn man selv kan vælge.Jeg valgte det sidste. <link>Eksperten.dk;http://www.eksperten.dk</link>. Koden virker også helt fint indtil....Når ? kommer ind i billedet.Eks: <link>Moesmus.dk;http://www.moesmus.dk/my.php?sub=77&language=0</link> hvor spørgsmål indgår i URL'enSå kløjes replace-funktionen i det, og laver ikke det, den får besked på. Resultatet er at min whileløkke fortsætter i det uendelige."
str=str.replace(/<link>(.+?);(.+?)<\/link>/gi,"<a href=\"\$2\" target=\"new\" class=\"plainAtext\">\$1</a>");
Response.Write(str)
%>
Avatar billede jezil Nybegynder
13. januar 2006 - 13:45 #2
mm12010 -> Næsten solgt - du har ret i at jeg skal være mere stærk i Regular Expression.
Jeg har prøvet at integrere din løsning
nfo=nfo.replace(/<link>(.+?);(.+?)<\/link>/gi,"<a href=\"\$2\" target=\"new\" class=\"plainAtext\">\$1</a>");

Men HTML-headeren skriver følende:
<a href="" target="new" class="plainAtext"></a>
Avatar billede jezil Nybegynder
13. januar 2006 - 13:48 #3
Efter a´t have læst på hjemmesiden: http://www.webreference.com/js/column5/values.html, fandt jeg ud af, at udtrykket $1 og $2 ikke skal have forslash foran.
Endelige kode:
nfo=nfo.replace(/<link>(.+?);(.+?)<\/link>/gi,"<a href=\"$2\" target=\"new\" class=\"plainAtext\">$1</a>");

Tak for hjælpen - mm12010 vil du have pointene?
Avatar billede mm12010 Nybegynder
13. januar 2006 - 13:49 #4
har du et link til siden?
Avatar billede jezil Nybegynder
13. januar 2006 - 13:55 #5
http://www.run-vikinger.dk
Under markedskalender -> Moesgård -> er teksten som jeg har integreret udtrykket.
Nu fremgår linket http://moesmus.dk/my.php?sub=77&language=0 som det skal!
Avatar billede jezil Nybegynder
13. januar 2006 - 13:57 #6
ups - der skal stå www foran moesmus.dk http://www.moesmus.dk/sub=77&language=0
Avatar billede jezil Nybegynder
13. januar 2006 - 13:58 #7
Avatar billede mm12010 Nybegynder
13. januar 2006 - 14:00 #8
selv tak :o)
Avatar billede jezil Nybegynder
13. januar 2006 - 20:41 #9
Værsgo :-)
Avatar billede jezil Nybegynder
13. januar 2006 - 20:41 #10
værsgo :-)
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