Avatar billede dero Nybegynder
26. april 2005 - 14:46 Der er 16 kommentarer og
1 løsning

Tjek efter lang streg, hvis der ikke sår "link" uden om

Hey.

Jeg har en funktion som tjekker om der er et ord på over 25 tegn. Er der det siger den "ikke så lange ord" men hvis der står

[url=]

og

[/Link]

omkring orden, så skal den ikke gøre noget.

p.s. Det ser sådan her ud i praksis.

[url=]http://www.et eller andet lort![Link]Den nice side[/Link]

Her er min funktion:

    var txt = document.post.besked.value.split(" ");
        for (i=0; i<txt.length;i++){
          if (txt[i].length > 25) {
            // ordet er over 25 tegn langt
                alert("Ikke sådanne lange ord - tror du at du er på universitetet? Max 25 tegn i samme ord!");
                return false;
          }
        }
Avatar billede busschou Praktikant
26. april 2005 - 17:36 #1
måske noget brug af substring?
var txt = document.post.besked.value.split(" ");
for (i=0; i<txt.length;i++){
var size = txt[i].length
if (size>25 && txt[i].substring(0,5)!="[url=]" && txt[i].substring(size-7,size-1)!="[/Link]") {
  // ordet er over 25 tegn langt
  alert("Ikke sådanne lange ord - tror du at du er på universitetet? Max 25 tegn i samme ord!");
  return false;
}
}
Avatar billede busschou Praktikant
26. april 2005 - 17:37 #2
Jeg er lidt i tvivl om jeg har talt rigtigt med hensyn til hvor mange karakterer den skal hive ud af substring...men bortset fra det så burde den sammenligning vist virke :o)
Avatar billede dero Nybegynder
26. april 2005 - 17:53 #3
hmm.. virker ikke rigtigt.
Avatar billede busschou Praktikant
26. april 2005 - 17:58 #4
ahh så ikke du splittede teksten ..my bad
Avatar billede busschou Praktikant
26. april 2005 - 18:03 #5
Du tjekker altså på hvert ord...jeg læste bare helt forkert sorry :o)
Du kan jo så bare tjekke om txt[i] = "[url=]".. hvis den er det så løbe forbi indtil du finder "[/Link]"
---
var txt = document.post.besked.value.split(" ");
var spring_over = false
for (i=0; i<txt.length;i++){
  if (txt[i] == "[url=]"){
  spring_over = true;
  }
  if (txt[i].length > 25 && !spring_over) {
  // ordet er over 25 tegn langt
  alert("Ikke sådanne lange ord - tror du at du er på universitetet? Max 25 tegn i samme ord!");
  return false;
}
  if (txt[i] == "[/Link]"){
  spring_over = false;
  }
}
Avatar billede yellow Nybegynder
26. april 2005 - 18:06 #6
ja, eller regexps:
  strBesked = document.post.besked.value.replace( /\[url=\].*?\[\/link\]/ig,"" );
  if( /\b.{26,}\b/.test(strBesked) ){   
    alert('ikke så lange ord');
    return false; 
  }
Avatar billede yellow Nybegynder
26. april 2005 - 18:11 #7
hovsa, anden linie skulle være:
if( /\b[^\s]{26,}\b/.test(strBesked) ){
Avatar billede busschou Praktikant
26. april 2005 - 18:35 #8
hehe ja som jeg siger i utal af spørgsmål så må jeg til at lære de regulære udtryk
Fordelen er at de er utrolig kompakte
Ulempen er at de er utrolig kompakte
Så det jeg forsøger at sige er at for dem som føler sig på hjemmebane i regulære udtryk skal bruge dem...dem som ikke gør..der føles det måske uoverskueligt når man engang i fremtiden skal ind og rette sin kode til..og ikke lige kan huske hvad det betød

Men det er sku smart synes jeg :o)
Avatar billede busschou Praktikant
26. april 2005 - 18:37 #9
men yellow..kan man bare putte det sådan direkte ind?
Skal man ikke definere det regulære udtryk først?..sådan synes jeg som ofte jeg ser det herinde
Avatar billede yellow Nybegynder
26. april 2005 - 18:56 #10
man kan sagtens bruge dem sådan direkte...
Jeg plejer dog at definere dem først hvis jeg skal bruge samme udtryk flere steder på siden.
Avatar billede busschou Praktikant
26. april 2005 - 18:58 #11
hvor kommer ordet test så fra i dit foreslag?
Avatar billede yellow Nybegynder
26. april 2005 - 19:04 #12
test() er bare den regexp funktion jeg bruger..
I første linie fjerner jeg alt mellem [url=] og [/link]...her bruger jeg en string funktion der hedder replace, og giver et regulært udtryk med som første parameter.

I anden linie tester jeg om den resterende streng har nogle ord der er længere end 25 karakterer... så .test( værdi ) er bare en regexp funktion.
Avatar billede busschou Praktikant
26. april 2005 - 19:06 #13
jamen ok så... :o)
Avatar billede dero Nybegynder
27. april 2005 - 16:40 #14
hmm..

Nu prøvede jeg:

var txt = document.post.besked.value.split(" ");
var spring_over = false
for (i=0; i<txt.length;i++){
  if (txt[i] == "[url=]"){
  spring_over = true;
  }
  if (txt[i].length > 25 && !spring_over) {
  // ordet er over 25 tegn langt
  alert("Ikke sådanne lange ord - tror du at du er på universitetet? Max 25 tegn i samme ord!");
  return false;
}
  if (txt[i] == "[/Link]"){
  spring_over = false;
  }
}

Det virkede ikke.. den sagde bare; ikke så lange ord
Avatar billede dero Nybegynder
27. april 2005 - 16:44 #15
Men det andet virker..

Vil du ikke skrive et svar? :-)

Mange tak!
Avatar billede yellow Nybegynder
27. april 2005 - 22:02 #16
svar
Avatar billede dero Nybegynder
28. april 2005 - 20:35 #17
Thanks :-)
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