You can find some Web service which holds a database of postal addresses or other geographic information you need and provides search by zip code. For example:
http://www.webservicex.net/uszip.asmx[
^],
http://developer.yahoo.com/search/local/V3/localSearch.html[
^].
For some services (if I'm not much mistaken, Yahoo is one of them), you need to sing up and authenticate before use.
For using Web Services with PHP, see
http://www.urdalen.no/wsdl2php/manual.php[
^] which will create you a proxy be WSDL file which you need to obtain from the provider of the service. You will need to use the proxy classes directly in your PHP scrip.
See also "How to easily consume a web service from PHP":
http://stackoverflow.com/questions/4430/how-to-easily-consume-a-web-service-from-php[
^].
—SA