3v4l.org

run code in 300+ PHP versions simultaneously
<?php function parseHeaders( $header ) { $retVal = array(); $fields = explode("\r\n", preg_replace('/\x0D\x0A[\x09\x20]+/', ' ', $header)); foreach( $fields as $field ) { if( preg_match('/([^:]+): (.+)/m', $field, $match) ) { $match[1] = preg_replace('/(?<=^|[\x09\x20\x2D])./e', 'strtoupper("\0")', strtolower(trim($match[1]))); if( isset($retVal[$match[1]]) ) { if (!is_array($retVal[$match[1]])) { $retVal[$match[1]] = array($retVal[$match[1]]); } $retVal[$match[1]][] = $match[2]; } else { $retVal[$match[1]] = trim($match[2]); } } } return $retVal; } $headers = "HTTP/1.1 200 OK\r\n". "content-type: text/html; charset=UTF-8\r\n". "Server: Funky/1.0\r\n". "Set-Cookie: foo=bar\r\n". "Set-Cookie: baz=quux\r\n". "Folded: works\r\n\ttoo\r\n"; print_r(parseHeaders($headers));
Output for git.master, git.master_jit, rfc.property-hooks
Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /in/ae99i on line 9 Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /in/ae99i on line 9 Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /in/ae99i on line 9 Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /in/ae99i on line 9 Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /in/ae99i on line 9 Array ( [] => Array ( [0] => text/html; charset=UTF-8 [1] => Funky/1.0 [2] => foo=bar [3] => baz=quux [4] => works too ) )

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
60.45 ms | 403 KiB | 8 Q