Toon posts:

[ASP] FORM zooi (Chr(13) replacen)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig aan een admin module, waar gebruikers dan zelf hun texten online mee kunnen zetten.



stukje code ziet er dus nu uit a la :

'hard returns
strTemp = Replace(strTemp,Chr(13),"<br>")
'strTemp = Replace(strTemp,"<BR>"&Chr(13),"<BR>")

'set to font size 1
strTemp = Replace(strTemp,"[f1]","<font size=1>")
strTemp = Replace(strTemp,"[/f1]","</font>")

'set to font size 2
strTemp = Replace(strTemp,"[f2]","<font size=2>")
strTemp = Replace(strTemp,"[/f2]","</font>")

'set to font size 3
strTemp = Replace(strTemp,"[f3]","<font size=3>")
strTemp = Replace(strTemp,"[/f3]","</font>")


enzo... het probleem zit'm in de
strTemp = Replace(strTemp,Chr(13),"<br>")

deze is nodig om text correct te laten zien.. maar om gewoon html te copy + pasten valt dit zwaar tegen.. bv, met tabellen, als er na de </tr> een <br> wordt gezet gaat alles naar beneden schuiven enzo.

Heeft er iemand een goeie functie voor dit soort gedoe?

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Even alle code tussen de [code] tags zetten plz. Dan nog een keer je vraag aub :)

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08:12

Crazy D

I think we should take a look.

Je vraag is niet het meest duidelijk maarre...
Chr(13) is netter om te vervangen door vbCrLf.
Hmmm... ja als ze aan het eind van de tekst nog een enter geven, krijg je idd een lege regel (duh) kun je makkelijk afvangen door spates aan het eind weg te halen, en te zorgen dat het laatste teken in de ingevoerde tekst nooit een CrLf is.
En verder snap ik eigenlijk gewoon niet zo goed wat je bedoelt.

Exact expert nodig?


Verwijderd

Topicstarter
Dus, er is een beheersmodule, waarmee gebruikers text en html in een database kunnen zetten.

In gewone stukken text, moet Chr(13) vervangen worden door <br>, omdat anders alle text doorloopt, zonder alinea's enzo.

Nu moeten gebruikers ook HTML code kunnen copy pasten, en als daarin Chr(13) door <br> vervangen wordt gebeurt er dit :

bv.
orginal:
<table>
<tr>
<td>blablabla</td>
</td>
</table>

wordt:
<table><br>
<tr><br>
<td>blablabla</td><br>
</td><br>
</table><br>

Met als gevolg dus dat alles naar beneden schuift (want de <br> valt buiten de tabel) - en dat mag dus niet.

Hopelijk is dit al wat duidelijker.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08:12

Crazy D

I think we should take a look.

Owhh op die fiets.
Hmm gebruikers uitleggen dat enter <br> is is zeker geen oplossing? :)
Hmm dat zou ik zo snel ff niet weten. Wordt idd wel lastiger dan. En helemaal als er niet altijd tabellen in staan, maar soms gewoon platte tekst.

Exact expert nodig?


  • MrBrown
  • Registratie: Augustus 2000
  • Laatst online: 11-06 15:51

MrBrown

Reservoir Dog

Vinkje in de form zetten "Enter HTML", die standaard uitstaat. Iemand die weet hoe een table werkt weet ook dat dat HTML is, dus moeten dat vinkje aanzetten. Als vinkje aanstaat die replace niet doen.

Dat misschien een idee?!? :?

Powered by Manetti (compiled by Jura)


Verwijderd

Je kunt natuurlijk alleen de CRLF's vervangen die niet in binnen een tabel-tag staan:
code:
1
2
3
4
5
6
7
8
i = 1
j = 1
Do While j < Len(s)
  j = InStr(i, s, "<table", vbTextCompare)
  If j = 0 Then j = Len(s)
  s = Left(s, i - 1) & Replace(Mid(s, i, j - i + 1), vbCrLf, "<br>") & Mid(s, j + 1)
  i = InStr(j, s, "</table>", vbTextCompare) + Len("</table>")
Loop

Ik heb het nog niet getest.

  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

ook ff chr(10) eruit filteren, helpt bij mij meestal ook.

chr(13) & chr(10) zijn enters

disjfa - disj·fa (meneer)
disjfa.nl


Verwijderd

Topicstarter
Op woensdag 14 november 2001 17:28 schreef Doekman het volgende:
Je kunt natuurlijk alleen de CRLF's vervangen die niet in binnen een tabel-tag staan:
code:
1
2
3
4
5
6
7
8
i = 1
j = 1
Do While j < Len(s)
  j = InStr(i, s, "<table", vbTextCompare)
  If j = 0 Then j = Len(s)
  s = Left(s, i - 1) & Replace(Mid(s, i, j - i + 1), vbCrLf, "<br>") & Mid(s, j + 1)
  i = InStr(j, s, "</table>", vbTextCompare) + Len("</table>")
Loop

Ik heb het nog niet getest.
bedankt hoor Doekman, k ga't direct uitproberen!

  • Scare360
  • Registratie: Juli 2001
  • Laatst online: 11-09 09:22
Als je slim bent zet ge gewoon een replace functie in de interface (internet pagina voor bezoekers). Dan kun je dit transparant houden voor de gebruikers van de admin module (dus ook gewone tekst copy pasten)


Zo heb ik het zelf ook gedaan in een admin module. Indien je de moeite neemt mij te emailen stuur ik je dat ene regeltje waarmee ik het gefixed heb.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08:12

Crazy D

I think we should take a look.

Op donderdag 15 november 2001 13:54 schreef paulgielens het volgende:
Als je slim bent zet ge gewoon een replace functie in de interface (internet pagina voor bezoekers). Dan kun je dit transparant houden voor de gebruikers van de admin module (dus ook gewone tekst copy pasten)


Zo heb ik het zelf ook gedaan in een admin module. Indien je de moeite neemt mij te emailen stuur ik je dat ene regeltje waarmee ik het gefixed heb.
MIsschien begrijp ik niet wat je bedoelt, maar volgens mij was nu het probleem dat de ene keer gewoon tekst in geklopt wordt. Dan kun je zonder problemen alle vbCrLf's replacen met <br>.
Maar, er kan ook html code in voorkomen, zoals een table. En met name bij een table wil je die crlf's niet zomaar vervangen, maar alleen de tekst binnen de td('s).

Exact expert nodig?


Verwijderd

Topicstarter
het werkt, en dit is dan nu de volledige functie
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<%
    FUNCTION cDisplay(strText)
                DIM strTemp
                strTemp = strText
                'italic text
                strTemp = Replace(strTemp,"[i]","<i>")
                strTemp = Replace(strTemp,"[/i]","</i>")
                'bold text
                strTemp = Replace(strTemp,"[b]","<b>")
                strTemp = Replace(strTemp,"[/b]","</b>")
                'underlined text
                strTemp = Replace(strTemp,"[u]","<u>")
                strTemp = Replace(strTemp,"[/u]","</u>")

                'set to font size 1
                strTemp = Replace(strTemp,"[f1]","<font size=1>")
                strTemp = Replace(strTemp,"[/f1]","</font>")

                'set to font size 2
                strTemp = Replace(strTemp,"[f2]","<font size=2>")
                strTemp = Replace(strTemp,"[/f2]","</font>")
                
                'set to font size 3
                strTemp = Replace(strTemp,"[f3]","<font size=3>")
                strTemp = Replace(strTemp,"[/f3]","</font>")

                'mail
                DO WHILE inStr(1,strTemp,"[m]") <> 0
                                intMailStart   = InStr(1, strTemp,"[m]")+3
                                intMailEnd     = InStr(intMailStart, strTemp, "[/m]")
                                intMailLength  = IntMailend-intMailStart
                                strMailAddress = Trim(Mid(strTemp, intMailStart, intMailLength))
                                strMailAddress = "<a href=""mailto:" & strMailAddress & """>" & strMailAddress & "</a>"
                                strTemp        = Mid(strTemp,1,intMailStart-4) & strMailAddress & Mid(strTemp,intMailEnd+4)
                LOOP
                'link
                DO WHILE inStr(1,strTemp,"[l]") <> 0
                                intLinkStart   = InStr(1, strTemp,"[l]")+3
                                intLinkEnd     = InStr(intLinkStart, strTemp, "[/l]")
                                intLinkLength  = IntLinkEnd-intLinkStart
                                strLinkURL     = Mid(strTemp, intLinkStart, intLinkLength)
                                strLinkURL     = "<a href=""" & strLinkURL & """ target=""_blank"">" & strLinkURL & "</a>"
                                strTemp        = Mid(strTemp,1,intLinkStart-4) & strLinkURL & Mid(strTemp,intLinkEnd+4)
                LOOP
                
                arrTemp = Split(Trim(strTemp),VbCrLf)
                FOR i=0 TO uBound(arrTemp)-1
                    chrTemp = Right(Trim(arrTemp(i)),1)
                    IF chrTemp <> ">"    THEN 
                                            ArrTemp(i) = "<br>" & vbCrLf & ArrTemp(i)' & "<br>" 
                                        ELSE
                                            ArrTemp(i) = vbCrLf & ArrTemp(i) 
                    END IF
                NEXT
                strTemp = Join(arrTemp)
                
                cDisplay = strTemp
    END FUNCTION
%>
Pagina: 1