apache_request_headersの代替

apache_request_headers()はすべての HTTP リクエストヘッダを取得する関数であるが、CGI版のPHPの場合はこの関数が使えない。
CGI版のPHPでapache_request_headers()関数を使いたいときのために次の代替が用意されている。

<?php
if (!function_exists('apache_request_headers')) {
    eval('
        function apache_request_headers() {
            foreach($_SERVER as $key=>$value) {
                if (substr($key,0,5)=="HTTP_") {
                    $key=str_replace(" ","-",ucwords(strtolower(str_replace("_"," ",substr($key,5)))));
                    $out[$key]=$value;
                }
            }
            return $out;
        }
    ');
}
?>

この後で、$headers = apache_request_headers();を実行すればリクエストヘッダを得ることができる。