Avatar billede hoejgaard Juniormester
26. marts 2007 - 22:15 Der er 30 kommentarer og
1 løsning

kontrollere længden af ord

Hej.
Jeg har fundet en god rich text editor : http://www.dynamicdrive.com/dynamicindex16/richtexteditor/index.htm

Jeg vil gerne undgå at brugere kan indtaste lange ord, så horisontal scrolleren kommer frem, og ikke mindst bliver layoutet ødelagt når jeg genindlæser teksten fra databasen.

Hvordan får jeg sat en begrænsning på hvor lange linier kan blive eller antallet af tegn i et ord ??
Avatar billede hoejgaard Juniormester
26. marts 2007 - 22:17 #1
har forsøgt med : $tmpvar = wordwrap($row["tekst"], 101,"<br />\n", 1);

Men der går ged i den når der eksempelvis er tabeller eller andet med.....
Avatar billede hoejgaard Juniormester
26. marts 2007 - 22:20 #2
så kan det komme til at se sådan her ud :

<P>hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh<br />
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh<br />
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh</P>
<P>
<TABLE cellSpacing=0<br />
cellPadding=4 width="100%"<br />
border=1>
<TBODY>
<TR>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD></TR>
<TR>
<TD>&nbsp;</TD>
<TD>&nbsp;</T<br />
D></TR></TBODY></TABLE></P>
Avatar billede roenving Novice
27. marts 2007 - 05:43 #3
I java script:

var tekst = '<P>hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh</P><P><TABLE cellSpacing=0 cellPadding=4 width="100%" border=1><TBODY><TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR><TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR></TBODY></TABLE></P>';
tekst = tekst.replace(/(\w{26})/g,"$1 ");
alert(tekst);

-- så indsættes der ikke noget andre steder end i teksten !-)
Avatar billede hoejgaard Juniormester
27. marts 2007 - 15:56 #4
okay det vil jeg da prøve :-)
Avatar billede hoejgaard Juniormester
27. marts 2007 - 15:58 #5
Har lige et spørgsmål til ..
Hvordan får jeg fjernet den view source box fra scriptet ??

Det er her den bliver lavet...

document.writeln('<iframe id="' + rte + '" name="' + rte + '" width="' + width + 'px" height="' + height + 'px" src="' + includesPath + 'blank.htm"></iframe>');
            if (!readOnly) document.writeln('<br /><input type="checkbox" id="chkSrc' + rte + '" onclick="toggleHTMLSrc(\'' + rte + '\');" />&nbsp;View Source');
        document.writeln('<iframe width="154" height="104" id="cp' + rte + '" src="' + includesPath + 'palette.htm" marginwidth="0" marginheight="0" scrolling="no" style="visibility:hidden; position: absolute;"></iframe>');
        document.writeln('<input type="hidden" id="hdn' + rte + '" name="' + rte + '" value="">');
        document.writeln('</div>');
       
        document.getElementById('hdn' + rte).value = html;
        enableDesignMode(rte, html, readOnly);
    } else {
        if (!readOnly) {
            document.writeln('<textarea name="' + rte + '" id="' + rte + '" style="width: ' + width + 'px; height: ' + height + 'px;">' + html + '</textarea>');
        } else {
            document.writeln('<textarea name="' + rte + '" id="' + rte + '" style="width: ' + width + 'px; height: ' + height + 'px;" readonly>' + html + '</textarea>');
        }
    }
Avatar billede roenving Novice
27. marts 2007 - 16:03 #6
Sæt readOnly til true under grundvariablerne !-)
Avatar billede hoejgaard Juniormester
27. marts 2007 - 17:30 #7
ja men så kan man ikke skrive i tekstfeltet.....
Avatar billede hoejgaard Juniormester
27. marts 2007 - 18:30 #8
Jeg er også lidt i tvivl om det med javascript du har skrevet imorges..
Det er jo når teksten bliver indlæst fra databasen at det skal i funktion, og ikke når brugeren skriver teksten....hvad gør dit script ??
Avatar billede roenving Novice
27. marts 2007 - 18:38 #9
Ja, så skal du nok over i noget php, måske preg_replace eller sådan ...

-- men typisk vil den slags jo ske i et forum, hvor nogen forsøger at drille, og så ville jeg simpelthen banne indlægget !-)

Scriptet finder forekomster af 26 ordtegn og udskifter det med de 26 ordtegn + et mellemrum, hvorved teksten kan ombrydes automatisk !o]
Avatar billede hoejgaard Juniormester
27. marts 2007 - 18:55 #10
okay, ved du hvordan jeg får klaret det med den view source box ??
Avatar billede roenving Novice
27. marts 2007 - 19:12 #11
Fjern de linjer, der skriver feltet og toggle-checkboxen !-)
Avatar billede hoejgaard Juniormester
27. marts 2007 - 19:41 #12
har forsøgt men så virker scriptet ikke.. Yror jeg beholder den.

har lige en ting til :-)
hvor får jeg $_POST[tekst] skrevet ud uden linjeskift ?
Scriptet kan ikke klare linjeskift i $_POST[tekst]

Jeg bruger den her :
<td><script language="JavaScript" type="text/javascript">
<!--
//Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
writeRichText('post', '<?echo "$_POST[tekst]" ?>', 400, 200, true, false);
//-->
</script>
</td>
Avatar billede hoejgaard Juniormester
27. marts 2007 - 19:41 #13
hvordan får jeg $_POST[tekst] skrevet ud uden linjeskift ?

skulle der have stået..
Avatar billede roenving Novice
27. marts 2007 - 19:45 #14
Erstat linjeskift med \n !-)
Avatar billede hoejgaard Juniormester
27. marts 2007 - 19:51 #15
er det sådan her ?? :
tekst = "$_POST[tekst]";
teskt = tekst.replace(/<br>/gi,\"\\n\");
Avatar billede roenving Novice
27. marts 2007 - 19:57 #16
Det kommer an på, hvad du gør, når du modtager teksten, men det lyder næsten rigtigt, hvis det er javascript, du vil gøre det i !-)

tekst = tekst.replace(/<br>/gi,"\n");
Avatar billede hoejgaard Juniormester
27. marts 2007 - 21:01 #17
det er lidt svært at forklare, men når html koden sendes i formen ser den feks. sådan her ud :

<P><FONT size=5>rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr</FONT></P>
<P><FONT size=6>rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr</FONT></P>
<P><FONT size=6>rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr</FONT></P>

Jeg har så en php fil der validerer indtastningerne i formen, og hvis der er fejlindtastninger i andre felter kommer formen op igen, og der er der problemet er med text editoren der ikke kan klare det her :

writeRichText('tekst', '<P><FONT size=5>rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr</FONT></P>
<P><FONT size=6>rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr</FONT></P>
<P><FONT size=6>rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr</FONT></P>', 400, 200, true, false);

fordi det strækker sig over flere linier i koden.. kan jeg undgå det ??
Avatar billede hoejgaard Juniormester
27. marts 2007 - 21:21 #18
jeg har nu prøvet det her :

<script language="JavaScript" type="text/javascript">
var tekst='writeRichText('tekst', '<P><FONT size=5>rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr</FONT></P>
<P><FONT size=6>rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr</FONT></P>
<P><FONT size=6>rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr</FONT></P>', 400, 200, true, false);'
tekst = tekst.replace(//gi,"\n");
</script>
<? echo $tekst; exit; ?>

Men det virker ikke....
Avatar billede roenving Novice
27. marts 2007 - 21:33 #19
Nej, du skal fjerne linjeskiftene før det rammer en javascript-variabel, så det må blive noget i denne henretning:

$tekst = preg_replace("/noget/",$_POST["tekst"],$tekst);
Avatar billede hoejgaard Juniormester
27. marts 2007 - 21:42 #20
øhh det der noget hvad er det..?
Avatar billede roenving Novice
27. marts 2007 - 21:51 #21
Du er nødt til at gøre det i php !-)
Avatar billede hoejgaard Juniormester
27. marts 2007 - 21:55 #22
ja men problemet er den der writeRichText der ikke fungerer når koden strækkes over flere linier, og det kan jeg vel ikke gøre noget for at undgå ??
Avatar billede roenving Novice
27. marts 2007 - 22:06 #23
Du kan da bare fjerne linjeskiftene !-)

-- php-variabler må godt indeholde linjeskift, men det må javascript-variable ikke !-)
Avatar billede hoejgaard Juniormester
27. marts 2007 - 22:18 #24
Ja men er lidt forvirret lige nu... :-( 

Ved ikke hvad der skal stå istedet for "noget "
$tekst = preg_replace("/noget/",$_POST["tekst"],$tekst);
Avatar billede roenving Novice
27. marts 2007 - 22:24 #25
Prøv:

"/\n|\r/g"

-- måtte lige kigge på:

http://dk.php.net/manual/en/function.preg-replace.php

-- så det må blive:

$tekst = $_POST["tekst"];
$tekst = preg_replace("/\n|\r/g","",$tekst);
Avatar billede hoejgaard Juniormester
27. marts 2007 - 22:47 #26
tror der er noget galt med :

$tekst = preg_replace("/\n|\r/g","",$tekst);

den er tom, selvom $tekst = $_POST["tekst"]; ikke er det..
Avatar billede hoejgaard Juniormester
27. marts 2007 - 23:05 #27
dette virker, uden jeg ved hvorfor
$tekst = $_POST["tekst"];
$tekst1 = preg_replace( "/\r\n/", "", $tekst);
Avatar billede roenving Novice
28. marts 2007 - 00:53 #28
Tjah, jeg har måske ikke forstået php-funktionen tilstrækkeligt, men så er det jo godt, at du selv prøver !-)
Avatar billede hoejgaard Juniormester
28. marts 2007 - 15:20 #29
læg et svar, som tak for den store hjælp !
Avatar billede roenving Novice
28. marts 2007 - 15:28 #30
Velbekomme '-)
Avatar billede roenving Novice
29. marts 2007 - 14:06 #31
-- og tak for point ;~}
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