dedlfix: Pattern für preg_match

Beitrag lesen

Tach!

$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.

Glaube versetzt Berge, aber in einer Zeichenklasse gibt es imn Gegensatz zu außerhalb nur nur ganz wenige Zeichen mit besonderer Bedeutung. Das wären \ - ^ (am Anfang). Unabhängig davon kann man aber seinem Glauben Nachdruck mithilfe ein paar überflüssiger Maskierungen verleihen. Macht die ganze Sache nur nicht übersichtlicher. Zumal man ja auch noch die Maskierungen für PHP-Strings mit berücksichtigen muss. Es ist jetzt schon ein Mix drin. Die ( und ) maskieren die Klammer für den Ausdruck, das ' hingegen maskiert das ' für den PHP-String.

Außerdem möchtest du in der Zeichenklasse sicher auch Großbuchstaben und Umlaute zulassen.

Die nicht erlaubten Großbuchstaben sind der Grund für das Nicht-Matchen. Aber warum nur auf Umlaute beschränken? Was ist an anderen Zeichen anders, dass sie entgegen der Umlaute nicht genommen werden dürfen? Andererseits würde ich das Problem dadurch lösen, dass ich englische Bezeichner nähme. Oder zumindest bei den deutschen Bezeichnern die Ersatzschreibweise. MySQL kommt zwar mit Nicht-ASCII in den Bezeichnern klar, aber man muss sich ja nicht unnötig Probleme ins Haus holen.

Ich glaube aber nicht, dass du mit einem Parser auf Basis von regulären Ausdrücken hundertprozentige Korrektheit erreichen wirst,  [...]

Der Theoretiker stimmt dir dabei zu, der Praktiker sagt sich aber: Wozu dieser Aufwand (des Erstellens und des Prüfens auf Fehlerfreiheit aller möglichen und unmöglichen Konstellationen), wenn der auf absehbare Zeit nicht zum Tragen kommen wird? "Komische" Zeichen in Bezeichnern machen nicht nur da Probleme, so dass man üblicherweise gleich von vornherin darauf verzichtet. Anders sieht es aus, wenn man ein Projekt erarbeitet, dass der Allgemeinheit zugute kommen soll. Da wäre der Aufwand gerechtfertigt, wenn man die Anwender nicht in ihrer Kreativität einschränken möchte. Bei den gezeigten Bezeichnern sieht es jedoch sehr nach Individualprojekt aus, da kann man sich guten Gewissens auf ein Mindestmaß einschränken.

dedlfix.