Viel Spaß mit PHP …

Ich hatte eben gerade eine Schrecksekunde, bzw. eigentlich keine Sekunde, sondern ziemlich viele bange Schreckminuten.

Ich habe diesen Sonntag ein paar Sachen an Friendica rumprogrammiert. Heute Abend habe ich dann gesehen, dass Posts nach pump.io nicht sauber rüberkommen, wenn sie einen Link auf Youtube enthalten – aber auch nur dann, wenn es geteilte Posts sind. (Echt ein Spezialfall)

Ich habe den Testfall relativ einfach nachstellen können und dann auch isoliert: Ein regulärer Ausdruck war manchmal zu gierig und hat Mist gebaut.

Okay. Also erstmal auskommentieren und weitermachen …

Irgendwann stelle ich fest, dass mein System nicht mehr läuft. D.h. ich habe auf einigen – aber nicht allen – Seiten einfach eine weiße Seite bekommen. In den Logfiles waren keine Fehler feststellbar. Laut den Logfiles lief echt alles prima (per API konnte ich noch auf alles zugreifen)

Ich habe auch per “git diff” geschaut, ob irgendetwas Seltsames in den Quelltext gekommen war – Fehlanzeige.

Ich habe dann ein paar der Änderungen rückgängig gemacht, die ich kurz zuvor gemacht hatte. Als ich die Kommentare vor dem regulären Ausdruck entfernte, lief das System wieder.

Fällt euch hier etwas auf?$content = preg_replace('/<a href="(https?:\/\/youtu.be\/.*?)".*?>(.*?)<\/a>/ism',"\n$1\n",$content);
Da ist ein “?>” drin – was von PHP auch als Endezeichen des Quelltextes interpretiert wird. Im normalen Betrieb ist das kein Problem – wohl aber, wenn man den Quelltext per “//” auskommentiert. Schließt man den Quelltext per “/*” und “*/” ein, klappt übrigens alles.

Manchmal ist PHP echt zum Knutschen …

Args …