SQL Freaks, wo seid ihr?
Ich habe früher das Quoter-Plugin eingesetzt, mit dessen Hilfe man Textstellen in den Kommentaren zitieren konnte. Ein großer Nachteil des Plugins stellt sich jetzt heraus. Für den Fall, dass man es deaktiviert oder es (wie jetzt aktuell) nicht mehr mit dem Theme zusammarbeiten möchte (aus welchem verf****en Grund auch immer), hinterlässt es Code-Reste (das hört sich nicht nur eklig an – das ist es auch!).
Das sieht dann ungefähr so aus (Nase zuhalten nicht nötig):
[quote comment="18573"]Wichtige, zitierte Textstelle.[/quote]
Wichtiger Kommentar.
Meine Idee war zunächst, die Code-Bestandteile von Quoter mit dem Suchen und Ersetzen-Plugin von Frank Bültge gegen die üblichen Blockquote-Tags zu ersetzen. Bei dem schließenden Tag wäre das ja kein Problem, doch da der Tag am Anfang jedesmal eine andere ID besitzt, klappt das mit diesem Werkzeug nicht.
Die Antwort auf folgende Frage ist sicher so einfach, dass man mich gleich im ersten Kommentar auslachen wird. Aber hey – meine SQL-Kenntnisse sind nunmal marginal bis nicht vorhanden. Wie ersetze ich den variablen Tag-Teil des Plugins, so dass es nachher folgendermaßen aussieht?
Wichtige, zitierte Textstelle.
Wichtiger Kommentar.
Und ja – ich weiß. Ich hätte die Frage auch auf Twitter raushauen können, aber so hat vielleicht noch jemand etwas davon. Bin ja nicht der Einzige, der dieses Plugin nutzt und es eventuell los werden möchte…
Meine SQL-Kenntnisse halten sich auch in Grenzen, in der Shell würde ich das mit [quote comment="*"] erledigen, oder denke ich gerade falsch?
Das ist nicht ganz trivial. Können die [ quote ]-Kästen mehrmals in einem Kommentar vorkommen und/oder verschachtelt sein?
Heil Dir admartinator.
Endlich … jaaa ENDLICH kann ich Dir mal antworten.
Versuch die Ausgabe doch durch diesen PHP Schnippsel zu jagen:
$string = '[quote comment="18573"]Wichtige, zitierte Textstelle.[/quote]';preg_match_all("|\[[^\]]+](.*)\[/[^\]]+]|U", $string, $out);
print "< blockquote >".$out[1][0]."< /blockquote >";
Auch wenn es jetzt blöd klingt, würde ich nach solchen Einträgen in der Datenbank mit LIKE suchen, als csv exportieren, einen Regexp im Smultron anwenden, speichern, importieren. Geschätzter Aufwand unter einer Minute
Ein ganz pragmatischer Ansatz ohne SQL-Voodoo wäre: mysqldump der betreffenden Tabelle. Dort einmal mit sed, perl, TextMate oder was auch immer diese Ersetzung machen. Und dann die Tabelle wieder importieren…
gucke hier: http://www.ipernity.com/doc/maxheadroom/7902573
Aber vorher erst an einer unauffälligen Stelle ausprobieren (ich sach nur auto-increment Felder)…
wenn ich das richtig verstanden habe, möchtest du gerne [quote comment="18573"] mit < blockquote > und den endsprechend schließenden tag ersetzen?
wenn es einfach nur [quote] wäre, könntest du das mit REPLACE machen … allerdings gibt es imho keine möglichkeit im zusammenhang mit REPLACE REGEX einzusetzen (ich nehme an, die comment id ist nicht immer 18573).
hm. ein kleines PHP script wäre nützlich?!
Probier doch mal das Plugin “Search Regex” – da kannst du mit Regexen suchen und ersetzen.
Als Nachtrag hier noch der Link zum Plugin: http://urbangiraffe.com/plugins/search-regex
ach herrje … der neue quote-tag wird natürlich schon geparsed und sofort umgewandelt?
ich hoffe du verstehst dennoch alles
Ich glaub, das Plugin von Mario ist die für mich maßgescheiderte Lösung. Wenn es denn funktioniert. Teste ich mal.
Mit allem Anderen mache ich mehr kaputt als gewollt – fürchte ich…
Danke euch allen schon mal sehr herzlich!
[Facebook-Button-Gefällt-mir-hindenk]
Noch mal an die RegEx-Profis: was muss da als Suchstring rein, wenn ich nur
[quote comment="18573"] mit < blockquote >
ersetzen wil? Das von Falko klappt nicht ganz.
s/\[quote comment="[0-9][0-9]*”\]/<blockquote>/
(wobei ich nicht weiß, wie stark WordPress diese Zeile jetzt verstümmeln wird)
Danke, so ähnlich hat es geklappt!
[quote comment="[0-9][0-9][0-9][0-9][0-9]“] war der Suchtring, der gepasst hat.
Mit diesem regex musst Du aufpassen, da in dem comment Attribut eine 5stellige zahl erwartet wird.
In meinem Fall ist sie immer 5-stellig.