<?php
parseURI( '"linktext":http://w...content-available-to-author-only...u.nl#Frag' );
function parseURI( $uri)
{
$r1 = '~
^
( # 1 (optional)
(?<scheme> [^:/?#]+ ) : # 2 <scheme>
)?
( # 3 (optional)
// (?<authority> [^/?#]* ) # 4 <authority>
)?
(?<path> [^?#]* ) # 5 <path> (required)
( # 6 (optional)
\? (?<query> [^#]* ) # 7 <query>
)?
( # 8 (optional)
\# (?<fragment> .* ) # 9 <fragment>
)# required?
~x';
#
# scheme = $2
# authority = $4
# path = $5
# query = $7
# fragment = $9
echo ("$r1\n");
echo ("$uri\n");
}
else {
echo("did not match '$uri'\n");
}
echo ("===========================\n");
$r2 = '~^((?<scheme>[^:/?#]+):)?(//(?<authority>[^/?#]*))?(?<path>[^?#]*)(\?(?<query>[^#]*))?(#(?<fragment>.*))?~';
}
else {
echo("did not match '$uri'\n");
}
$r3 = '~
^(
([^:/?#]+)
:
)?
(
//
([^/?#]*)
)?
([^?#]*)
(
\?
([^#]*)
)?
(
\#
(.*)
)?
~x';
echo ("===========================\n");
}
else {
echo("did not match '$uri'\n");
}
$r4 = '~^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?~';
echo ("===========================\n");
}
else {
echo("did not match '$uri'\n");
}
}
?>
PD9waHAKCnBhcnNlVVJJKCAnImxpbmt0ZXh0IjpodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4udS5ubCNGcmFnJyApOwoKZnVuY3Rpb24gcGFyc2VVUkkoICR1cmkpCnsKICAkcjEgPSAnfgogICBeCiAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSAob3B0aW9uYWwpCiAgICAgICAoPzxzY2hlbWU+IFteOi8/I10rICkgOiAgICAgICAgICMgMiA8c2NoZW1lPgogICAgKT8KICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAzIChvcHRpb25hbCkKICAgICAgIC8vICg/PGF1dGhvcml0eT4gW14vPyNdKiApICAgICAgIyA0IDxhdXRob3JpdHk+CiAgICApPwogICAgKD88cGF0aD4gW14/I10qICkgICAgICAgICAgICAgICAjIDUgPHBhdGg+ICAocmVxdWlyZWQpCiAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgNiAob3B0aW9uYWwpCiAgICAgIFw/ICg/PHF1ZXJ5PiBbXiNdKiApICAgICAgICAgICAgICMgNyA8cXVlcnk+CiAgICApPwogICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDggKG9wdGlvbmFsKQogICAgICBcIyAoPzxmcmFnbWVudD4gLiogKSAgICAgICAgICAgICAjIDkgPGZyYWdtZW50PgogICAgKSMgcmVxdWlyZWQ/CiAgfngnOwoKICAgICMKICAgICMgICBzY2hlbWUgICAgPSAkMgogICAgIyAgIGF1dGhvcml0eSA9ICQ0CiAgICAjICAgcGF0aCAgICAgID0gJDUKICAgICMgICBxdWVyeSAgICAgPSAkNwogICAgIyAgIGZyYWdtZW50ICA9ICQ5CgogIGVjaG8gKCIkcjFcbiIpOwogIGVjaG8gKCIkdXJpXG4iKTsKCiAgaWYoIHByZWdfbWF0Y2goJHIxLCAkdXJpLCAkbSkpIHsKICAgICBwcmludF9yKCRtKTsKICB9CiAgZWxzZSB7CiAgICAgZWNobygiZGlkIG5vdCBtYXRjaCAnJHVyaSdcbiIpOwogIH0KCiAgZWNobyAoIj09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CgogICRyMiA9ICd+XigoPzxzY2hlbWU+W146Lz8jXSspOik/KC8vKD88YXV0aG9yaXR5PlteLz8jXSopKT8oPzxwYXRoPltePyNdKikoXD8oPzxxdWVyeT5bXiNdKikpPygjKD88ZnJhZ21lbnQ+LiopKT9+JzsKCiAgaWYoIHByZWdfbWF0Y2goICRyMiwgJHVyaSwgJG0pKSB7CiAgICAgcHJpbnRfcigkbSk7CiAgfQogIGVsc2UgewogICAgIGVjaG8oImRpZCBub3QgbWF0Y2ggJyR1cmknXG4iKTsKICB9CgoKICAkcjMgPSAnfgogICBeKAogICAgICAoW146Lz8jXSspCiAgICAgIDoKICAgICk/CiAgICAoCiAgICAgIC8vCiAgICAgIChbXi8/I10qKQogICAgKT8KICAgIChbXj8jXSopCiAgICAoCiAgICAgIFw/CiAgICAgIChbXiNdKikKICAgICk/CiAgICAoCiAgICAgIFwjCiAgICAgICguKikKICAgICk/CiAgIH54JzsKCiAgZWNobyAoIj09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CgogIGlmKCBwcmVnX21hdGNoKCAkcjMsICR1cmksICRtKSkgewogICAgIHByaW50X3IoJG0pOwogIH0KICBlbHNlIHsKICAgICBlY2hvKCJkaWQgbm90IG1hdGNoICckdXJpJ1xuIik7CiAgfQoKICAkcjQgPSAnfl4oKFteOi8/I10rKTopPygvLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpP34nOwoKICBlY2hvICgiPT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKCiAgaWYoIHByZWdfbWF0Y2goICRyNCwgJHVyaSwgJG0pKSB7CiAgICAgcHJpbnRfcigkbSk7CiAgfQogIGVsc2UgewogICAgIGVjaG8oImRpZCBub3QgbWF0Y2ggJyR1cmknXG4iKTsKICB9Cn0KCj8+Cg==