hallo.
ich habe für ASP ein paar BBCode Funktionen geschrieben, also eine Übersetzung
von BBCode in HTML (Beispiel: [ b ]hallo welt[ /b ] in < b >hallo welt< /b >).
alles klappt soweit ganz, bis auf ein ganz kleines Problem mit HTML-Listen!
Und zwar:
Ich definiere mal einen Text mit BBCode, der nach HTML übersetzt werden soll:
(die Leerzeichen bitte wegdenken! Die musste ich
machen, weil sonst dieses Forum die Angaben interpretiert^^) dieser
String wird nun beim abspeichern/ausgeben durch die
Funktion gejagt:
Und genau hier tritt das Problem auf!
Er gibt nämlich folgenden HTML-Code aus:
Wie ihr seht steht der Inhalt NICHT ZWISCHEN <li> und </li>
(das schließende </li> ist nicht zwar nicht erforderlich, ich brauche es hier aber).
Ich bin echt am verzweifeln, weil ich diese Situation nicht verstehe! Die Backreference
enthält ja anscheinend den korrekten Wert! Aber der Wert wird an dieser
Stelle outStr = objRe.Replace(inpStr,"<li>$1</li>") nicht zwischen
die Tags gesetzt, sondern ans Ende!
Ich hoffe einer von euch kann mir helfen! An anderen Stellen benutze ich auch
Backreferences, zB bei URLs usw. dort funktionieren die 1A!
Danke schonmal,
gruß dek*
ich habe für ASP ein paar BBCode Funktionen geschrieben, also eine Übersetzung
von BBCode in HTML (Beispiel: [ b ]hallo welt[ /b ] in < b >hallo welt< /b >).
alles klappt soweit ganz, bis auf ein ganz kleines Problem mit HTML-Listen!
Und zwar:
Ich definiere mal einen Text mit BBCode, der nach HTML übersetzt werden soll:
PHP-Code:
str = "test text test text [ list ][ * ]punkt 1[ * ]punkt 2[ * ]punkt 3[ /list ] test text."
machen, weil sonst dieses Forum die Angaben interpretiert^^) dieser
String wird nun beim abspeichern/ausgeben durch die
Funktion gejagt:
PHP-Code:
'### Funktions-Aufruf: ###'
Response.Write bbc_list(str)
'### BBC2HTML Funktion für[list] ###'
Function bbc_list(inpStr)
Set objRe = New RegExp
objRe.IgnoreCase = True
objRe.Global = True
objRe.Pattern = "\\[list\\](.*?)\\[\\/list\\]"
inpStr = objRe.Replace(inpStr,"<ul>$1</ul>")
objRe.Pattern = "\\[list=(.*?)\\](.*?)\\[\\ /list\\]"
inpStr = objRe.Replace(inpStr,"<ol type=$1>$2</ol>")
objRe.Pattern = "\\[\\*\\](.*?)"
outStr = objRe.Replace(inpStr,"<li>$1</li>")
bbc_list = outStr
Set objRe = Nothing
End Function
Er gibt nämlich folgenden HTML-Code aus:
PHP-Code:
test text test text
<ul>
<li></li>punkt 1
<li></li>punkt 2
<li></li>punkt 3
</ul>
test text.
(das schließende </li> ist nicht zwar nicht erforderlich, ich brauche es hier aber).
Ich bin echt am verzweifeln, weil ich diese Situation nicht verstehe! Die Backreference
enthält ja anscheinend den korrekten Wert! Aber der Wert wird an dieser
Stelle outStr = objRe.Replace(inpStr,"<li>$1</li>") nicht zwischen
die Tags gesetzt, sondern ans Ende!
Ich hoffe einer von euch kann mir helfen! An anderen Stellen benutze ich auch
Backreferences, zB bei URLs usw. dort funktionieren die 1A!
Danke schonmal,
gruß dek*
Kommentar