Avatar billede webcreator Nybegynder
24. september 2004 - 23:23 Der er 1 kommentar og
1 løsning

Brug af "BB" kode åbner for potentiel risiko for valideringsfejl

Hej Eksperter.

Mine brugere har i vores forum mulighed for, at bruge BB-lignende kode. Det åbner dog desværre for en hel del fejl-muligheder.

Brugeren kan fx. hæve tekst med [sup]tekst[/sup]. Men undlades [/sup], fås kun en halv-færdig HTML-kode : <sup>tekst

Jeg har brug for, på en eller anden måde, at gennemgå en større tekst (placeret i variablen $content), og tjekke for 20 forskellige BB-koder - på én gang. Jeg har lavet lidt kode vha. str_replace :

function form($content) {
   
    $content = nl2br(htmlentities($content));
   
    $from=Array("[sup]", "[/sup]", "[sub]", "[/sub]", "[pi]", "[alfa]", "[beta]", "[gamma]");
    $to=Array("<sup>", "</sup>", "<sub>", "</sub>", "<img src=\"style/$style_folder/images/forum/pi.gif\" alt=\"\">", "&alpha;", "&beta;", "&gamma;");
   
    return str_replace($from,$to, $content);
   
}

Jeg ved at ovenstående kan laves på flg. måde (fra 7th) :

// Her ændres [link]www.test.dk[/link] til et rigtigt link
preg_replace("/\[link\](.+?)\[\/link]/" , '<a href="http://$1">$1</a>' , $content);

Men hvis jeg bruger ovenstående metode, så skal jeg gennemløbe $content ca. 20 gange, hvilket langt fra er optimalt i forhold til den nuværende metode, hvor jeg kun gennemgår teksten én gang for alle BB-koderne.

Nogen der kan give mig en hånd?
Avatar billede webcreator Nybegynder
24. september 2004 - 23:29 #1
Hov!
Er løsning ikke bare : (?)

// Funktionen bruges til, at lave specielle tegn om til formler, i forummet
function form($content) {
   
    $content = nl2br(htmlentities($content));
   
    #$from=Array("[sup]", "[/sup]", "[sub]", "[/sub]", "[kvrod]", "[/kvrod]", "[pi]", "[~]", "[&lt;=]", "[&gt;=]", "[Omega]", "[omega]", "[Delta]", "[lambda]", "[alfa]", "[beta]", "[gamma]");
    #$to=Array("<sup>", "</sup>", "<sub>", "</sub>", "<img src=\"style/$style_folder/images/forum/kvrod.gif\" alt=\"\">(", ")", "<img src=\"style/$style_folder/images/forum/pi.gif\" alt=\"\">", "&asymp;", "&le;", "&ge;", "&Omega;", "&omega;", "&Delta;", "&lambda;", "&alpha;", "&beta;", "&gamma;");
   
    $from=Array("/\[sup\](.+?)\[\/sup\]/", "/\[link\](.+?)\[\/link]/");
    $to=Array("<sup>$1</sup>", "<a href=\"http://$1\">$1</a>");
   
    return preg_replace($from,$to, $content);
   
}
Avatar billede webcreator Nybegynder
25. september 2004 - 00:47 #2
.
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