Hakuna matata!
[Field] => class
[Type] => set('Hotel','Pension','Lodge','Ferienhaus','Ferienwohnung')
[Null] => YES
[Key] =>
[Default] =>
[Extra] =>
Das sieht für mich nach einer Datenbank-Abstraktionsschicht aus, stimmt das? Wenn ja, dann gibt es vielleicht in der Bibliothek schon einen Parser für das Type-Feld, welche Bibliothek benutzt du denn?
$pm = preg_match('~([a-z]+)((['a-z,0-9]*))~', $columns['Type'], $matches);
Ich glaube das Komma muss an dieser Stelle maskiert werden, auch wenn es dort kein Sonderzeichen ist. Außerdem möchtest du in der Zeichenklasse sicher auch Großbuchstaben und Umlaute zulassen.
Ich glaube aber nicht, dass du mit einem Parser auf Basis von regulären Ausdrücken hundertprozentige Korrektheit erreichen wirst, denn in SQL-Strings sind auch wieder Hochkommata und schließende Klammern erlaubt, die bei der Kodierung in obiges Format wieder entsprechend maskiert werden würden. Ich würde daher zu einem Parser auf Basis eines endlichen Automaten raten, die sind soweit entwickelt, dass sie sogar autoamtisch aus einer kontextfreien Grammatik generiert werden können. Die Grammatik kannst für die obige Kodierung kannst du sicher irgendwo im SQL-Standard finden. Oder du greifst natürlich gleich zu einem fertigen SQL-Parser.
“All right, then, I'll go to hell.” – Huck Finn