Regular Expression für Forum
Ingo D. Ongemuth
- javascript
Ich brauche ein wenig Hilfe zu Regular Expressions. Und zwar möchte ich einen Text parsen und dort wo der Nutzer:
[cite]
Hier steht das Zitat
hier die zweite Zeile
[/cite]
eingibt, das durch sowas ersetzen:
<div class="cite">
Hier steht das Zitat<br />
hier die zweite Zeile
</div>
Eigentlich popelig.
Da ich mich aber gar nicht an Regexps auskenne habe ich unten stehende, ineffiziente und fehleranfällige Routine geschrieben, bei der jemand leicht manipulieren kann und dann sowas rauskommen kann, wenn er mehrfach [cite] aber nur einmal [/cite] eingibt:
<div class="cite">
<div class="cite">
<div class="cite">
Hier steht das Zitat<br />
hier die zweite Zeile
</div>
Die Frage ist nun, wie man das schön mit einer schlichten RegExp ausdrücken kann. Dazu habe ich mir zwar auch schon angesehen:
http://de.selfhtml.org/javascript/objekte/regexp.htm
Komme aber nicht so recht voran. Vielleicht hat jemand so ein einfaches Stück Code rumfliegen?
Ich wäre sehr verbunden,
schönen Sonntag noch,
Ingo
--- grauseliger code ---
// [cite]\nl => [cite] , ~~~
\nl => [code]
rawText = rawText.replace(/[cite]\r\n|[cite]\r|[cite]\n/g, '[cite]'); // remove newlines after "[cite]"
rawText = rawText.replace(/\r\n[/cite]|\r[/cite]|\n[/cite]/g, '[/cite]'); // remove newlines before "[/cite]"
rawText = rawText.replace(/[code]\r\n|[code]\r|[code]\n/g, '[code]'); // remove newlines after "[code]"
rawText = rawText.replace(/\r\n[/code]|\r[/code]|\n[/code]/g, '
rawText = rawText.replace(/\r\n|\r|\n/g, '<br />'); // then convert remaining newlines to <br />
blockStyle = 'clear:both;padding:10px;background-color:#fff;border:1px solid #666;margin:10px 0';
rawText = rawText.replace(/\[cite\]/g, '<div style="' + blockStyle + '">');
rawText = rawText.replace(/\[\/cite\]/g, '</div>');
rawText = rawText.replace(/\[code\]/g, '<div style="' + blockStyle + '"><pre>');
rawText = rawText.replace(/\[\/code\]/g, '<pre></div>');
Sorry, zu schnell abgesendet!
Hallo Freunde des gehobenen Forumsgenusses,
Und zwar möchte ich einen Text parsen und dort wo der Nutzer:
[cite]
Hier steht das Zitat
hier die zweite Zeile
[/cite]eingibt
Ich vermute, dass du auch noch andere BB-Codes verwenden willst,
da wirst du mit Regulären Ausdrücken schnell Probleme bekommen,
wenn Leute so etwas eingeben: [a][b][/a][/b]
Daher empfehle ich dir Christian Seilers BBCode-Parserklasse, die ist dafür da, BBCode zu parsen und in (X)(HT)ML umzuwandeln.
Gruß
Alexander Brock
Hallo Freunde des gehobenen Forumsgenusses,
Hallo zurück!
Ich vermute, dass du auch noch andere BB-Codes verwenden willst,
da wirst du mit Regulären Ausdrücken schnell Probleme bekommen,
wenn Leute so etwas eingeben: [a][b][/a][/b]
Daher empfehle ich dir
Puh, das ist ja ziemlich umfangreich und zudem PHP. Ich brauche eine Javascript-Implementation. Weisst Du zufällig von fertigen Bibliotheken?
Danke + beste Grüsse,
Ingo