3v4l.org

run code in 300+ PHP versions simultaneously
<?php $regex_url = <<<REGEX ` (?(DEFINE) (?<slash_seg> /(?&pchar)* ) (?<pchar> [a-zA-Z\d\-._~!$&'()*+,;=:@%]* ) (?<queryfrag> [a-zA-Z\d\-._~!$&'()*+,;=:@%/?]* ) ) ^ (?: (?<scheme> [a-zA-Z][a-zA-Z\d+\-.]* ) :)? (?: (?: // (?: (?<userinfo> (?<user> [a-zA-Z\d\-._~!$&'()*+,;=%]*) (?: :(?<pass> [a-zA-Z\d\-._~!$&'()*+,;=%:]*) )? ) @)? (?<host> (?<host_name> [a-zA-Z\d\-\.%]+ ) | (?<ipv4> \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} ) | (?: \[ (?<ipv6> [a-fA-F\d.:]+ ) \] ) ) (?: :(?<port> \d*) )? ) (?<path> (?: /(?&pchar)* )* ) | (?<path_abs> /(?: (?&pchar)+ (?&slash_seg)* )? ) | (?<path_rel> (?&pchar)+ (?&slash_seg)* ) )? (?: \? (?<query> (?&queryfrag) ) )? (?: \# (?<fragment> (?&queryfrag) ) )? `x REGEX; $urls = [ 'scheme://username:password@domain:443/path?query_string#fragment_id', 'http://en.wikipedia.org/wiki/URI#Examples_of_URI_references', 'http://127.0.0.1/ipv4', 'http://[db8:0cec::99:123a]/ipv6', 'http://example.org/absolute/URI/with/absolute/path/to/resource.txt', '//example.org/scheme-relative/URI/with/absolute/path/to/resource.txt', '/relative/URI/with/absolute/path/to/resource.txt', 'relative/path/to/resource.txt', '../../../resource.txt', './resource.txt#frag01', 'resource.txt', '#frag01', '', ]; foreach($urls as $url) { preg_match($regex_url, $url, $m); var_dump($m); }

preferences:
42.93 ms | 402 KiB | 5 Q