Da ich gerade am Vorbereiten des Releases von GeSHi arbeite, durchsuchte ich routinemäßig den Bugtracker, um zu schauen, was so an Fehlern gemeldet wurde. Dabei stieß ich unter anderem auch auf einen Fehler, der das Variablen-Highlighting betraf. Soweit unspektakulär.
Im Bugreport wurde darauf verwiesen, dass laut PHP-Doku auch Byte-Werte außerhalb von US-ASCII für Variablen-Namen erlaubt sind. Also hab‘ ich mir aber den Regexp in der Language File anschaut, und dort die nötige Änderung eingebaut. Im Original sah das etwa so aus:
[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*
Da fiel mir doch glatt vorne die geschweifte Klammer ins Auge und ich dachte mir: „Warum ein Limit auf maximal 2 Dollar-Zeichen? PHP kann sicherlich mehr!“
Nun, also kurzer Test, ob das syntaktisch korrekt wirklich korrekt ist und siehe da:
echo '< ?php $a = "b"; $b = "c"; $c = "d"; $d = "Hello!\n"; echo $$$$a;'|php
Die Shell begrüßt mich freundlich. Soviel also dazu: PHP ist wirklich so krank!
P.S.: Für die Leute ohne Bash:
<?php $a = "b"; $b = "c"; $c = "d"; $d = "Hello!\n"; echo $$$$a;