dedlfix: preg_replace nicht geschlossene Anführungszeichen entfernen

Beitrag lesen

Hi!

Ich habe einen x-beliebigen String aus dem ich intelligent nicht geschlossene Anführungszeichen entfernen will - sprich:

Was ist mit nicht geöffneten" Anführungszeichen?

Jedenfalls wird das ein ziemliches RegExp-Monster, bei dem du nicht nur mit Assertions arbeiten musst. Du kannst ja nicht nur "einfach" nach vorn und zurück schauen, du musst auch noch jedes Mal Paare suchen und ungerade oder gerade Anzahlen berücksichtigen. Da bekommst du jedoch Problem, weil es ein solches Auswahlkriterium nicht gibt. Kann man sicher irgendwie anders lösen. Mit noch mehr Aufwand. Und wenn du dann fertig bist, fällt dir drei Wochen später ein Fehler auf und dein Gedächtnis hat das Monster bereits so erfolgreich vergesen, dass du dir mühsam heraussuchen musst, was jeder Teilausdruck macht, damit du erst einmal wieder die Arbeitsweise verstehst und dann noch den Fehler finden musst.

Ich würde das herkömmlich angehen, ungefähr so: Finde die jeweils ersten Vorkommen von ' "' und '" '. Wenn die Position des ersten größer als die des zweiten ist, hast du einen Fehler gefunden, den du ja ausschneiden willst. Bedenke, dass dabei der Rest-String kürzer wird, und du ein Zeichen weiter vorn mit dem restlichen Teilstring fortfahren musst.

Lo!