Avatar billede rudi1234 Nybegynder
21. januar 2003 - 13:53 Der er 7 kommentarer og
1 løsning

wysiwyg: fjern alle underlige tegn

Jeg har en wysiwyg, og når jeg sender data via en form skal de gemmes i en DB. Men det som kommer i formen ser sådan ud:

%3CH1%3EHej%3C/H1%3EDette%20er%20en%20test%20

I stedet for det jeg skrev: <h1>Hej</h1>Dette er en test.

Hvordan kan jeg "rense" den øverste tekststreng så den bliver til den nederste?
Avatar billede erikjacobsen Ekspert
21. januar 2003 - 14:52 #1
Du skal nok ikke "rense" den, men bare gøre det på den rigtige måde.
Hvordan gør du?
Avatar billede rudi1234 Nybegynder
21. januar 2003 - 16:14 #2
Jeg har fundet flg. kode til wysiwyg-editoren. Den sender indholdet til filen output.asp (se aller nederst).

wysiwyg.htm:
<html>
<head>
<title>WYSIWYG</title>
<style>
body {
font-family: Arial;
}

a {
color: white;
font-size: 14px;
text-decoration: none;
}
</style>
<link rel='stylesheet' type='text/css' HREF='styles/main.css' media=screen>
<script>
  function doHead(hType)
  {
    if(hType != '')
    {
      ifr.document.execCommand('formatblock', false, hType); 
      doFont(selFont.options[selFont.selectedIndex].value);
    }
  }


function ex() {
document.ifr.focus();
com = ex.arguments[0];
if (ex.arguments.length == 1)
document.ifr.document.execCommand(com, false);
else {
sec = ex.arguments[1];
if (sec != null) {
if (com == "InsertImage") {
algn = confirm("Tryk OK for at venstrestille billedet, Anullér for at højrestille!");
document.ifr.focus();
document.ifr.document.selection.createRange().pasteHTML('<img src="images/' + sec + '" border="0" align="' + ((algn) ? "left" : "right") + '">');
}
else
document.ifr.document.execCommand(com, false, sec);
}
}
document.ifr.focus();
}

spalteAntal = 1;

function spalter() {
if (!confirm("Vil du ændre antallet af spalter til " + (3 - spalteAntal) + "?"))
return;
spalteAntal = 3 - spalteAntal;
if (spalteAntal == 2) {
indhold = document.ifr.document.body.innerHTML;
halv1 = indhold.substring(0, Math.round(indhold.length / 2));
halv2 = "";
if (halv1.indexOf("<") != -1 && halv1.lastIndexOf("<") > halv1.lastIndexOf(">")) {
halv2 = halv1.substring(halv1.lastIndexOf("<"), halv1.length);
halv1 = halv1.substring(0, halv1.lastIndexOf("<"));
}
halv2 += indhold.substring(Math.round(indhold.length / 2), indhold.length);
document.ifr.document.body.innerHTML = '<table width="100%" height="90%" border="0"><tr><td width="50%" valign="top" id="spalte1">' + halv1 + '</td><td width="50%" valign="top" id="spalte2">' + halv2 + '</td></tr></table>';
}
else
document.ifr.document.body.innerHTML = document.ifr.document.all.spalte1.innerHTML + document.ifr.document.all.spalte2.innerHTML;
document.ifr.focus();
}

farv = null;
function farve() {
if (farv && !farv.closed)
farv.focus();
else
farv = window.open("wysiwyg_farve.htm", "farveVindue", "width=530,height=270,left=300,top=50,toolbars=no,scrollbars=no,status=no,resizable=no");
}

function prev() {
win = window.open("", "prevVindue", "width=400,height=300,left=300,top=50,toolbars=no,scrollbars=yes,status=yes,resizable=yes");
win.document.write("<html><head><title>Smugkig</title></head><link rel='stylesheet' type='text/css' HREF='styles/main.css' media=screen><body>" + document.ifr.document.body.innerHTML + "</body></html>");
}
</script>
</head>
<body onLoad="document.ifr.document.designMode = 'On'; document.ifr.focus();">
<form action="output.asp" method="post" name="frm" id="frm" onSubmit="return false;">
<input type="hidden" name="html">
<table cellspacing="0" cellpadding="3">
<tr>
<td bgcolor="#336699" align="center">
<a href="#" onClick="ex('Bold'); return false;" title="Fed"><b>F</b></a> -
<a href="#" onClick="ex('Italic'); return false;" title="Kursiv"><i>K</i></a> -
<a href="#" onClick="ex('Underline'); return false;" title="Understreget"><u>U</u></a> -
<select onChange="if (this.selectedIndex != 0) ex('FontName', this.options[this.selectedIndex].value);">
<option value="">Skrifttype</option>
<option value="Times New Roman">Times New Roman</option>
<option value="Arial">Arial</option>
<option value="Verdana">Verdana</option>
<option value="Tahoma">Tahoma</option>
<option value="Courier">Courier</option>
<option value="Comic Sans MS">Comic Sans MS</option>
</select>

<select onChange="if (this.selectedIndex != 0) ex('FontSize', this.options[this.selectedIndex].value);">
<option value="">Skriftstørrelse</option>
<option value="1">1 (ca. 7 i Word)</option>
<option value="2">2 (ca. 9 i Word)</option>
<option value="3">3 (ca. 10 i Word)</option>
<option value="4">4 (ca. 12 i Word)</option>
<option value="5">5 (ca. 16 i Word)</option>
<option value="6">6 (ca. 20 i Word)</option>
<option value="7">7 (ca. 30 i Word)</option>
</select>


<a href="#" onClick="farve(); return false;" title="Vælg en farve til teksten" style="color: red;">Farve</a> -
<a href="#" onClick="ex('JustifyLeft'); return false;" title="Venstrejustér">&lt;--</a> -
<a href="#" onClick="ex('JustifyCenter'); return false;" title="Centrér">---</a> -
<a href="#" onClick="ex('JustifyRight'); return false;" title="Højrejustér">--&gt;</a> -
<a href="#" onClick="document.ifr.document.body.style.textAlign = 'justify'; document.ifr.focus(); return false;" title="Giv hele dokumentet lige marginer"><u>---</u></a> -
<a href="#" onClick="ex('InsertImage', prompt('Billedets navn:', '')); return false;" title="Indsæt et billede fra nettet">Billede</a> -
<a href="#" onClick="ex('InsertOrderedList'); return false;" title="Tal-opstilling">1. 2. 3.</a> -
<a href="#" onClick="ex('InsertUnorderedList'); return false;" title="Punkt-opstilling">Punkt</a> -
<a href="#" onClick="spalter(); return false;" title="Indsæt spalter">Spalter</a> -
<a href="#" onClick="ex('Copy'); return false;">Kopiér</a> -
<a href="#" onClick="ex('Cut'); return false;">Klip</a> -
<a href="#" onClick="ex('Paste'); return false;">Sæt ind</a>
</td>
</tr>
<tr>
<td bgcolor="#6699CC" align="center">
<iframe src="test.htm" width="90%" height="300" frameborder="0" style="border: 2px solid black;" name="ifr""></iframe>
</td>
</tr>
<tr>
<td bgcolor="#336699" align="center">
<b><a href="#" onClick="document.frm.html.value = escape(document.ifr.document.body.innerHTML); document.frm.submit(); return false;" title="Send informationen">SEND!</a> -
    <a href="#" onClick="document.ifr.document.body.innerHTML = ''; document.ifr.focus(); return false;" title="Slet alt og start forfra">SLET!</a> -
    <a href="#" onClick="prev(); return false;" title="Se, hvad du har lavet indtil nu">Tag et smugkig!</a>
</td>
</tr>
</table>
</form>
</body>
</html>


output.asp:

<%
response.request.form("html")
%>
Avatar billede rudi1234 Nybegynder
21. januar 2003 - 16:15 #3
Rettelse:
output.asp:
<%
response.write request.form("html")
%>
Avatar billede erikjacobsen Ekspert
21. januar 2003 - 18:02 #4
escape(...) er den der gør det. Nu kan jeg ikke huske
om der en indbygget funktion i ASP til at omgå den
forvandling.
Avatar billede erikjacobsen Ekspert
21. januar 2003 - 18:58 #5
Prøv lige

response.write server.urldecode(request.form("html"))
Avatar billede rudi1234 Nybegynder
21. januar 2003 - 19:49 #6
Functionen server.urldecode findes vist ikke i asp. Dette spm gav mig svaret: http://www.eksperten.dk/spm/108748 med denne funktion:

rivate Function URLDecode(Expression)
  \'Why doesn\'t ASP provide this functionality for us?
  Dim strSource, strTemp, strResult
  Dim lngPos
  strSource = Replace(Expression, \"+\", \" \")
  For lngPos = 1 To Len(strSource)
    strTemp = Mid(strSource, lngPos, 1)
    If strTemp = \"%\" Then
      If lngPos + 2 < Len(strSource) Then
        strResult = strResult & _
            Chr(CInt(\"&H\" & Mid(strSource, lngPos + 1, 2)))
        lngPos = lngPos + 2
      End If
    Else
      strResult = strResult & strTemp
    End If
  Next
  URLDecode = strResult
End Function
Avatar billede erikjacobsen Ekspert
21. januar 2003 - 20:02 #7
Det er jo rigtigt - jeg huskede forkert. Der er en Server.URLencode
Avatar billede rudi1234 Nybegynder
28. januar 2003 - 11:22 #8
Lukker spm da jeg selv fandt svar
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