\nIPv6: " . $ipv6 . "
\n";
// URL regular expressions
$pct_encoded = "%[\dA-F]{2}";
$unreserved = 'a-z0-9\-._~';
$sub_delims = '!$&\'()*+,;=';
$pchar = "(?:[$unreserved$sub_delims:@|]+|$pct_encoded)"; // rfc: no "|"
$scheme = '[a-z][a-z\d+\-.]*';
$reg_name = "(?:[$unreserved$sub_delims:@|]+|$pct_encoded)+"; // rfc: * instead of + and no "|" and no "@" and no ":" (included instead of userinfo)
//$userinfo = "(?:(?:[$unreserved$sub_delims:]+|$pct_encoded))*";
$ipv4_simple = '[0-9.]+';
$ipv6_simple = '\[[a-z0-9.]+:[a-z0-9.]+:[a-z0-9.:]+\]';
$host = "(?:$reg_name|$ipv4_simple|$ipv6_simple)";
$port = '\d*';
//$authority = "(?:$userinfo@)?$host(?::$port)?";
$authority = "$host(?::$port)?";
$segment = "$pchar*";
$path_abempty = "(?:/$segment)*";
$hier_part = "/{2}$authority$path_abempty";
$query = "(?:[$unreserved$sub_delims:@/?|]+|$pct_encoded)*"; // pchar | "/" | "?", rfc: no "|"
$fragment = $query;
$url = "$scheme:$hier_part(?:\?$query)?(?:\#$fragment)?";
echo 'URL: ' . $url . "
\n";
// no scheme, shortened authority, but host has to start with www.
$www_url = "www\.$reg_name(?::$port)?$path_abempty(?:\?$query)?(?:\#$fragment)?";
echo 'www.URL: ' . $www_url . "
\n";
// no schema and no authority
$relative_url = "$segment$path_abempty(?:\?$query)?(?:\#$fragment)?";
echo 'relative URL: ' . $relative_url . "
\n";
?>ĺSu(ucp6y]q`Y'BpA㗠P5dTw
J(@FgRO_ -1ߤXYk 9̿&PXOyvZelJ~/jÀ |ݤjW
w^LA#A,ȝTg!$u5sarvb"Q?q7r1 4ݨG+ jyM.2Z)v`p(=eS5K12jA:}TTY|AI5H"Dn+?V#^O,wJqqfǖH67Mǟ'2J)?|}0o";`߰S(ɦjdE]j>;)`[Ɯ3}NeeEnSd/*lH3EP&%% ϷpwKxͱ#
B)v}*!V`qQb5s}lHaV'
*?{V TD$dHUbqd1DPǛU'V
\5Yod]WxӚ%L 4i,x\ZgCO~.]Y@E:H䐋- iB T52>b1VR_;$ʤTb8tOiIB &x͢b:hD!j̼ t3KD%kb&ڇNz_\7Ok(g7_tOaغw5?ThhTd@`sqS/UÎgKdHHоχ?K|ܜhv=8\\ xe2 ]L'M7meЩasc)jǔ|luBQ=<×tBfA8?:
-gzPs?
,m|1㞥m|4Nt9n0 iz64&!VI"0Y"+w#
']kRpT2鯿 i$dА=ӦlZ岷nwOQa>S#5>S(5 s
8F63ݑPNF'8e 0ߡ"/3l ʔwnT*cBjs\^JO
QŜ;ary3t~WkXKRlrs}u2WqԆ!c~Y0ez,mSBǵֻŝ^uF0qHCq/z]V݉Ӵ!JTg+[.IwÉ⪫bݚAe""rYӽZ-d3F s~
@iRߖ KMjn^_N7c#
hZ-&wtu jFePwH'T4~A+uzV}\A? ViVtM=yV{MJXm:j* h#VP 5Fy=s2|}quu*4jHtO.;'
Nw|mی?Ν&VYKu,fwʚTmp9&M%
VC٪ܮQd^i>-FՁ6(ָ5!X3lr;ͫRAU^O\VbĹH;{##F=J@'!WR(Tmq\E2.MHngcvK'wS0U~LO`vxdb́%hMW{}FOrr]qp6 un{Oo 6
X~K_\(CoHΩs0j/0O^+1WM[)!Y]V*Hx*0Ci@]8b;}=q^3_E9~'i}s2{#ibLԸ1 jpXTO: zOdvw/Ҙeyaf E.t!h6 E8z]+y %W@aِ=@FTE)DPnk Yz?|e#~($1xye'VkrB'9Դ;W
[-r0Aq5|aJdo \K+VG%BZu/{G'e{D0HZd{K X ڪİPb2I9y|{=S?B#`D`bjqxձfG!sdU
|1Giu@4LƑCd-\ѪFc.M#ɃX?}za! #4.Ɨ]bφz
D>;)V⸵N/h%vr_q¹<{rɿ6`2 +v3xR.;VLAK_Ezc
4nrNGOVs|\=ebT/H #8"l#<ȩD 2h|X\eu%#{φU\ZeIaӮh'B.QoPd$J7 )=VM֝r(%4aN߱DH)M6O~Qv0Q6%ܮf#ﱬH堉%ɞ#fb.57FP~.| g"`UP.`JĀW'[IT \fÕG4$E
aͻKBg2c-Ls;Os.˗RZk(P ó>'4%Oi#v R[e=KW| }%paHt=4V)S:;.G5I{l(D:9f?2ATF4+4eާ$HPtՒ߁V2kJmH`O+&DsEb7VCá{=2q UY|;*Lz,_,ȗ
+fuҼNa3I_E5.}N%eJЛ+_k\tS*uX)"
ܡ=/A:dq<3
A<ϣTj(.vE{pfhO)XW+0!ck7-4<gj'<|)j~7jE%
LvfU0&Kǁ(FET2"$X)/N%~9n-_:㒨z;1r*J@z{)Ľ/
Pnީ0PAgך Cuȉg0ߋRu"ud,%p(}
+3GB`wFMG"/}*>c8o9u.6-V`RX Gַ?O+i+'6r,ݤy^/RrT%z|WK7ۣ%D_Kt,JX51"nY27[EYU#$FM)9d۷u ZQ䥨RΞg4Wgyii5~T(Ճ22v_ZpA1YLDC']NQ\m&6dҀCz ,}ˊ)e>2msm< Pyf\X^`8gCuyMņK}'ǃ:舸C_ߪ.PI\r n>{RNNVU(x?a)b7JGVM@ċgIA:MU2?Jy3}ߏG!Ng |*$|N an ]\UR`!c #G:tmєEi艉/O$ .Lw?헂A%*;Zeb /dg ȭ1:3Cń|)`j,NdMz,b d}N{Ytעeg`W9`0*08 ¯DГ#x >a5#rIT,b1~~N[A qI`td0{lAObT .]C.ot`%䶝A)yofQ7l ? 8xۏL7#QuJd8+)vqʴGLySyХГk~_HDJh1Pèp2:7"GQӄ?8e]p>6Ou荋PwVJNhnb )jnĀ:bʅ; Í z'FZ4HbooYv \6BhfO0S[N#fM'O*M u' !` Dgdk(Dw.gwe(/"~><kIqsgb!؝ڇH{Y0~K܉۔`&y%+-gڰw R8Z,xeJnt =Ә`ӯ bЃb /RxT`.*,W6}>0ژa#;@SlA3 9g먃O!-u\Rq