Seite 1 von 1

BBCode Format in alten Beiträgen anpassen

Verfasst: 27.09.2013 14:22
von Nuramon
Huhu.

Ich habe bei mir einen benutzerdefinierten BBCode für einen Spoiler eingebaut, der so aussieht:

Code: Alles auswählen

[spoiler={TEXT1}]{TEXT2}[/spoiler]
Das erste ist für die Überschrift, das zweite für den Text. Funktioniert alles, kein Problem.

Jetzt möchte ich aber den BBCode gerne an das Schema der schon existierenden BBCodes anpassen, und zwar dem Quote. Das heißt der erste Text soll in Anführungszeichen stehen.

Code: Alles auswählen

[spoiler="{TEXT1}"]{TEXT2}[/spoiler]
Finde ich persönlich ästethischer, und vor allem auch intuitiver. Fragt mich nicht, wieso ich das nicht damals schon so gemacht habe...

Wenn ich das jetzt so ändern würde, würden die alten Spoiler-Codes ohne Anführungszeichen nicht mehr funktionieren. Nun suche ich einen Weg, wie es trotzdem geht.
Ich habe überlegt den Code mittels einer RegExp zu ersetzen, aber MySQL unterstützt das ja nicht. Könnte mir maximal ein PHP-Skript schreiben, was alle Posts ausliest, entsprechend erstzt und in der Datenbank updated, oder? Wäre viel Arbeit..

Als Alternative fiele mir noch ein in der Datenbank einen Replace auf [spoiler= in [old_spoiler= zu machen und den BBCode nach altem Schema anzulegen, aber dann müsste ich auch [/spoiler] in [old_spoiler] ersetzen, und das ist problematisch, da ich noch einen Spoiler-BBCode ohne Parameter habe, der dann nicht mehr funktioniert.

Ich bin ratlos...
Habt ihr eine Idee, was ich machen könnte?

Re: BBCode Format in alten Beiträgen anpassen

Verfasst: 27.09.2013 14:39
von Kirk
Hallo
Versuch es mal hiermit: SQL: Änderung von Texten in allen Beiträgen

Re: BBCode Format in alten Beiträgen anpassen

Verfasst: 27.09.2013 14:49
von Nuramon
Kirk hat geschrieben:Hallo
Versuch es mal hiermit: SQL: Änderung von Texten in allen Beiträgen
Danke schonmal für deine Antwort.

Die Funktion war mir sogar bekannt, das meinte ich ja mit meinem zweiten Vorschlag, dass ich Teile von den BBCodes ersetze. Das Problem ist nur, dass innerhalb des Spoiler-Tags ja auch ein benutzerdefinierter Text steht. Wie kann ich den dann tatsächlich korrekt ersetzen?
In der Datenbank sieht das ja etwa so aus:
[spoiler=Versteckter Text Mit Überschrift:3s43thkk]Das hier ist dann wohl der zweite Spoiler für die Vorschau^^[/spoiler:3s43thkk]
Wie kann ich also mit der Query sowohl den öffnenden als auch den schließenden Tag ersetzen? Ich befürchte eben, dass das mit MySQL nicht geht.

Es soll ja am Ende so aussehen:
[spoiler="Versteckter Text Mit Überschrift":3s43thkk]Das hier ist dann wohl der zweite Spoiler für die Vorschau^^[/spoiler:3s43thkk]

Re: BBCode Format in alten Beiträgen anpassen

Verfasst: 28.09.2013 19:10
von Miriam
Idee:
  • Dumpe die Tabelle, die die fraglichen zu ändernden Daten enthält
  • benutze Notepad++ zum Editieren
  • suche nach (\[spoiler=)(.*?)(:[0-9a-z]{8,}])
  • ersetzen durch \1\"\2\"\3
    • "reguläre Ausdrücke" anklicken nicht vergessen!
  • -> alle ersetzen
  • abspeichern
  • Restore der Tabelle
  • fertig

Re: BBCode Format in alten Beiträgen anpassen

Verfasst: 28.09.2013 19:31
von Nuramon
Aaaaah, auf die Idee bin ich gar nicht gekommen.
Das ist klingt genial, danke.
Ich werde es demnächst mal testen (:

Re: BBCode Format in alten Beiträgen anpassen

Verfasst: 29.09.2013 09:54
von LisaserstesForum
In dem Support Toolkit gibt es die Funktion Reparse BBCode: Reparses the BBCode for the boards posts, damit sollte das
auch gehen. :)