3v4l.org

run code in 300+ PHP versions simultaneously
<?php print "omg"; $parts = parse_url("http://9999%00?:@1.2.3.4/btc.txt#lol"); print "meh"; print_r($parts); print "wah"; $hosts = gethostbynamel($parts['host']); print_r($hosts); #echo bin2hex($parts["user"]); print "wtf"; print buildUrl($parts); function buildUrl($parts) { $url = ''; $url .= (!empty($parts['scheme'])) ? $parts['scheme'] . '://' : ''; $url .= (!empty($parts['user'])) ? $parts['user'] : ''; $url .= (!empty($parts['pass'])) ? ':' . $parts['pass'] : ''; //If we have a user or pass, make sure to add an "@" $url .= (!empty($parts['user']) || !empty($parts['pass'])) ? '@' : ''; $url .= (!empty($parts['host'])) ? $parts['host'] : ''; $url .= (!empty($parts['port'])) ? ':' . $parts['port'] : ''; $url .= (!empty($parts['path'])) ? $parts['path'] : ''; $url .= (!empty($parts['query'])) ? '?' . $parts['query'] : ''; $url .= (!empty($parts['fragment'])) ? '#' . $parts['fragment'] : ''; return $url; } ?>
Output for 5.6.28 - 5.6.40, 7.0.13 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
omgmehArray ( [scheme] => http [host] => 9999%00 [query] => :@1.2.3.4/btc.txt [fragment] => lol ) wahwtfhttp://9999%00?:@1.2.3.4/btc.txt#lol
Output for 5.5.19 - 5.5.38, 5.6.3 - 5.6.27, 7.0.0 - 7.0.12
omgmehArray ( [scheme] => http [host] => 1.2.3.4 [user] => 9999%00? [pass] => [path] => /btc.txt [fragment] => lol ) wahArray ( [0] => 1.2.3.4 ) wtfhttp://9999%00?@1.2.3.4/btc.txt#lol
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.18, 5.6.0 - 5.6.2
omgmehArray ( [scheme] => http [host] => 1.2.3.4 [user] => 9999%00? [path] => /btc.txt [fragment] => lol ) wahArray ( [0] => 1.2.3.4 ) wtfhttp://9999%00?@1.2.3.4/btc.txt#lol

preferences:
292.65 ms | 404 KiB | 460 Q