Im Sting alles mit (xxx) ersetzten
bearbeitet von Rolf BHallo Gunnar,
> Vor ( gehört ein Leerzeichen. (Vor [ und nach ] auch.)
Es besteht eine relevante Wahrscheinlichkeit dafür, dass die Ersteller der zu parsenden Texte das nicht wissen oder drauf gepfiffen haben.
Heißt: Eine Funktion, die mit eingeklammerte sucht und irgendwas damit macht, sollte NICHT voraussetzen, dass die Regeln zur korrekten Leerzeichenverwendung eingehalten wurden.
Spannend wird es vor dann, wenn im zu verarbeitenden Text die Klammerschachtelung falsch ist. Also zum Beispiel: Der Mann (bekleidet mit einer [nicht löchrigen) Jeans] steht hinter dem Haus.
Mein Ansatz wäre, nach geschlossenen Klammern zu suchen (z.B. mit `p = strcspn($sting, ")}]")` und von dort aus rückwärts nach der passenden öffnenden Klammer (z.B. mit strrpos). Hat man auf diese Weise ein geklammertes Fragment gefunden, muss man noch prüfen ob es einer der öffnenden Klammern enthält; wenn ja, liegt ein Schachtelungsfehler vor. Wenn nicht, kann man mit dem Fragment tun, was immer nötig ist, und zwar so, dass das gefundene Klammerpaar nachher nicht mehr im String steht. Und danach fängt man von vorn an, solange, wie etwas gefunden wird.
_Rolf_
--
sumpsi - posui - clusi