Avatar billede hoejgaard Juniormester
07. november 2005 - 01:57 Der er 21 kommentarer og
1 løsning

tekst felt med foskellige formater

Jeg vil gøre det muligt for brugere af min hjemmeside at bruge eks. fed skrift,understregning oa. i et textfelt.
Hvordan er det muligt ??
Avatar billede Six Nybegynder
07. november 2005 - 02:14 #1
Du kan gøre det ved at lave dine egne tags. f.eks. til fed skrift laver du et tag der hedder Fed Skrift Og når så teksten skal udskrives søger du teksten for tekst og replacer det med <strong>tekst</strong> så du udskifter dine [b] tags med  <strong>.
Avatar billede Six Nybegynder
07. november 2005 - 02:14 #2
spørg hvis du er i tvivl, så kan jeg godt prøve at lave dig et eksempel.
Avatar billede showsource Seniormester
07. november 2005 - 02:24 #3
njahh, som fjappe, næsten

Hvis en bruger skriver:

Hej med dig
[i]Æblegrød med det hele, <?php echo"Ups!"; ?>[i]

Kan du starte med:

$text = htmlentities($string); // $string er den tekst brugeren har skrevet
$text = str_replace("[", "<", $text);
$text = str_replace("]", ">", $text);

echo nl2br($text);

Du kan også lave et array med de specifikke tags som må bruges, og så kun udskifte dem.
Avatar billede Six Nybegynder
07. november 2005 - 02:29 #4
showsource, men med den der vil du jo kunne sætte hvilket somhelst htmltag ind og det kan jo i sidste ende resultere i en smadret side, hvis den forkert finder det sjovt ;D
Avatar billede Six Nybegynder
07. november 2005 - 02:32 #5
$text = htmlentities($string); // $string er den tekst brugeren har skrevet
$text = str_replace("", "<b>", $text);
$text = str_replace("
", "</b>", $text);

echo nl2br($text);

Sådan ville jeg foreslå det og så lave dem for hvert eneste tag du skal give brugerne mulighed for at lave, på den ovenskrevne måde kan brugerne ikke indtaste hvilke somhelst htmlkode og så få det replaced.

showsource det er ikke for at stjæle din løsning, jeg ville bare sikre mig at hoejgaard fik begge muligheder.
Avatar billede showsource Seniormester
07. november 2005 - 02:45 #6
Du stjæler da ikke noget :O)
Foreslog jo selv at lave et array med tilladte tags!

$string = "
Hej du
Hvad nu?<?php echo'shit'; ?>


";

$tags = array("" => "<b>","" => "</b>", "" => "<i>", "" => "</i>");

$text = htmlentities(trim($string));
$text = strtr($text, $tags);
echo nl2br($text);
Avatar billede showsource Seniormester
07. november 2005 - 02:50 #7
Og forresten, skovenborg's løsning her, kan bruges til at lave buttons med de tilladte tags
http://www.eksperten.dk/spm/493088
Avatar billede Six Nybegynder
07. november 2005 - 03:00 #8
showsource jeg takker for dit eksempel og dit link, det fandt jeg brugbart selvom det ikke er mig der stiller spørgsmålet hehe ;D
Avatar billede wuggawugga Nybegynder
07. november 2005 - 10:08 #9
Hvad med FCKEditor? Man embedder den på siden, og vupti kan brugerne skrive richtext direkte i browseren.
Den laver godtnok kun almindelig html kode, men det er ganske overkommeligt at tilpasse editoren og skrive et filter i php der sørger for at det ikke bliver misbrugt. Jeg har brugt denne metode på et par af mine nyeste sites, og brugerne er meget glade for den.


http://www.fckeditor.net/
Avatar billede hoejgaard Juniormester
07. november 2005 - 11:59 #10
okay jeg vil lige kigge på det og vender tilbage senere idag !
Avatar billede hoejgaard Juniormester
07. november 2005 - 13:09 #11
Jeg har nu benyttet skovenborg's løsning men kan ikke lige fp det til at virke :
Er det første noget javascript eller hvad ?????

var fokus = false;
var cursorpos;
function insertText(frmElm,text) {
    if (frmElm.selectionEnd != undefined) {cursorpos=frmElm.selectionEnd+text.length;frmElm.value = strInsert(frmElm.value,text,frmElm.selectionEnd);}
    else if (document.selection && fokus) {r = document.selection.createRange();r.text = text;}
    else if (document.selection == undefined) frmElm.value += text;
    else;
}
function mozPlaceCursor(frmElm) {
    if (frmElm.selectionEnd != undefined && cursorpos != undefined) {
        frmElm.setSelectionRange(cursorpos,cursorpos);
    }
}
function strInsert(input_str,insert_str,insert_position) {
    return input_str.substring(0,insert_position)+insert_str+input_str.substr(insert_position);
}


<form name="form1">
<input type="button" onmousedown="insertText(this.form.felt,'<b>');" onmouseup="this.form.felt.focus();mozPlaceCursor(this.form.felt);">
<textarea name="felt" onfocus="fokus = true;" onblur="fokus = false;">Her er der en masse tekst</textarea>
</form>
Avatar billede hoejgaard Juniormester
07. november 2005 - 13:45 #12
okay nu har jeg indsat
<script language="JavaScript">
var fokus = false;
var cursorpos;
function insertText(frmElm,text) {
    if (frmElm.selectionEnd != undefined) {cursorpos=frmElm.selectionEnd+text.length;frmElm.value = strInsert(frmElm.value,text,frmElm.selectionEnd);}
    else if (document.selection && fokus) {r = document.selection.createRange();r.text = text;}
    else if (document.selection == undefined) frmElm.value += text;
    else;
}
function mozPlaceCursor(frmElm) {
    if (frmElm.selectionEnd != undefined && cursorpos != undefined) {
        frmElm.setSelectionRange(cursorpos,cursorpos);
    }
}
function strInsert(input_str,insert_str,insert_position) {
    return input_str.substring(0,insert_position)+insert_str+input_str.substr(insert_position);
}
</script>
<form name="form1">
<input type="button" onmousedown="insertText(this.form.felt,'<b>');" onmouseup="this.form.felt.focus();mozPlaceCursor(this.form.felt);">
<textarea name="felt" onfocus="fokus = true;" onblur="fokus = false;">Her er der en masse tekst</textarea>
</form>

Men jeg vil gerne ha det bliver sådan, at eks. fed text allerede kan ses i textfeltet, når man klikker på knappen for fed text.. Kan man ikke lave det ??
Avatar billede showsource Seniormester
07. november 2005 - 14:50 #13
Det er jeg ret sikker på du ikke kan.
Et textfelt er et textfelt.

En anden ting, i dit ex. bruger du <b>

D.v.s. man kan med andre ord tilføje lige præcis hvad man vil.
Er det også hvad du vil?
Avatar billede showsource Seniormester
07. november 2005 - 14:55 #14
Du kan jo, ved at lave et array med tilladte tags

$tags = array("" => "<b>","" => "</b>", "" => "<i>", "" => "</i>");

$allowed = array_keys($tags);

foreach($allowed as $button) {
echo"<input type=\"button\" value=\"". $button ."\" onmousedown=\"insertText(this.form.felt,'". $button ."');\" onmouseup=\"this.form.felt.focus();mozPlaceCursor(this.form.felt);\">";
}
Avatar billede hoejgaard Juniormester
07. november 2005 - 15:27 #15
showsource :
"Det er jeg ret sikker på du ikke kan.
Et textfelt er et textfelt."

Ja men vil gerne ha at det skal virke på den måde..
Har set det på dating.dk , så det må kunne lade sig gøre.. textfelt eller ej ??
Avatar billede showsource Seniormester
07. november 2005 - 15:55 #16
kan vel laves med noget javascript, evt. en div som opdateres samtidig med indtastning, men du må jo kunne kikke kode på dating.dk :O)
Avatar billede wuggawugga Nybegynder
07. november 2005 - 16:11 #17
Jo det kan sagtens lade sig gøre. FCKEditor laver et standard tekstfelt om til en WYSIWYG rich text editor. Jeg er ret sikker på at det er dette du har i tankerne.
Selve editoren er simpel at arbejde med, den skal bare tilpasses lidt. Derefter skal du have lidt data validering på serversiden, så du er sikker på at der kun kommer tilladte tags med.
Produktet er gratis og source koden følger med. Det virker i hvertfald i IE og Mozilla, og du kan paste tekst ind direkte fra F.eks. Word.

Der er en fin demo her: http://www.fckeditor.net/demo/default.html
Avatar billede hoejgaard Juniormester
07. november 2005 - 18:05 #18
wuggawugga
det ser godt ud.. vil prøve at kigge på det..
Avatar billede hoejgaard Juniormester
07. november 2005 - 18:09 #19
wuggawugga
Øh hvor skal man lige kigge for at få sat editoren op ???
Avatar billede wuggawugga Nybegynder
07. november 2005 - 19:10 #20
Der er flere forskellige metoder. De to du nok skal kigge på er PHP og ren javascript.
Der er et par hurtige eksempler på deres wiki side:

http://wiki.fckeditor.net/Developer%27s_Guide/Integration/PHP
http://wiki.fckeditor.net/Developer%27s_Guide/Integration/Javascript

Den simpleste metode(synes jeg selv) er java script: Du lægger koden op på dit site og inkluderer filen fckeditor.js derfra.
Herefter skal du bare have et <textarea> tag med et id felt, som du til sidst bruger i et funktionskald i javascript, for at erstatte det almindelige tekstfelt med FCK editoren.

Når du senere skal tilpasse editoren til dit eget site, gøres det vha. nogle arrays svjh. inde i selve koden.
Avatar billede hoejgaard Juniormester
07. november 2005 - 19:59 #21
okay vil prøve at kigge på det ...
Avatar billede hoejgaard Juniormester
21. september 2006 - 13:38 #22
lukker
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