I\'ll try to explain what\'s the problem here.
According to list of supported timezones from PHP manual, I can see all valid TZ identifiers in PHP.
My first
If you're on Linux most if not all information on timezones there stored at /usr/share/zoneinfo/. You can walk over them using is_file() and related functions.
You can also parse the former files with zdump for codes or fetch sources for these files and grep/cut out needed info. Again, you are not obliged to use built-in functions to accomplish the task. There isn't a rationale why would someone force you to use only the built-in date functions.