Problematische RegEx Ersetzung bei Dezimalzahlen denen eine Null voran ist

von chr-fritz am 12.11.2009

Ich hatte gestern das Problem dass mir in der Terminansicht der neuen Version des SiteAdmins die per ModRewrite umgeschriebenen Links bei den Monaten August (8) und September (9) immer zum Aktuellen Monat umgeleitet wurde. Während die Umschreibung mit Hilfe der PHP-Funktion "preg_replace" bei allen anderen Monaten Problemlos lief.

Der Grund ist dass bei einem Replace String der als PHP-Code ausgewertet werden und bei dem Zahlenwerte an eine Funktion ohne Hochkommas übergeben werden in einen Integer umgewandelt werden. Sollte dabei vor einer Zahl eine 0 vorstehen, so interpretiert PHP die Zahl als eine Zahl im Oktalsystem. Was zur Folge hat dass 01-07 (da ja gültige Oktalzahlen) sowie 10-12 richtig interpretiert wurden während 08 und 09 als 0 interpretiert werden, da es sich hierbei um keine gültigen Oktalzahlen handelt.