#RFC3986

ignace nyamagana buteranyamsprod@phpc.social
2025-05-22

It's official #PHP8.5 will get not one but two URI/URL compliant parsers 🎉 externals.io/message/127317#12 #RFC3986 #WHATWG-URL
Good job by @kocsismate90

ignace nyamagana buteranyamsprod@phpc.social
2024-12-23

#LeagueURI will expose the methods from the upcoming native PHP URI interface to allow easier upgrade to using PHP URI native extension when it will be released github.com/thephpleague/uri-sr comments and remarks are welcomed in the PR. #uri #rfc3986 #rfc3987

2024-11-06

This can't be right.

#Python #URL #URI #RFC3986

Calling urllib.parse.urljoin in Python with the two arguments "myscheme://authority/path-a/path-b" and "path-c" returns "path-c", nothing else. Replacing "myscheme" with "https" however returns "https://authority/path-a/path-c".
Léon van Kammenlvk@mastodon.online
2024-06-12

URI Templates #RFC6570 and Media Fragments #RFC3986 gives developers #NOCODE programmable hypermedia linking without needing a webbrowser/scripting engine:

://{chapter}.mp3#t={time}

Lots of interesting opportunities for (file) metadata adopting them.
A HTML5 webbrowser-implementation is not the soul of 'a common web', it's the URI's in any shape or form (jusk ask interpeer.io)

2023-12-04

@nabijaczleweli by the way:

perl -lne 'print $& while m'\''([A-Za-z][0-9A-Za-z+.-]*):(?://((?:(?:[0-9A-Za-z._~!$&-,;=:-]|%[0-9A-Fa-f]{2})*@)?(?:(?:[0-9A-Za-z._~!$&-,;=-]|%[0-9A-Fa-f]{2})*|\[[0-9A-Za-z._~!$&-,;=:-]+\])(?::[0-9]*)?)(?=[/?#]|$)|(?!//))((?:[0-9A-Za-z._~!$&-,;=:@/-]|%[0-9A-Fa-f]{2})*)(?:\?((?:[0-9A-Za-z._~!$&-,;=:@/?-]|%[0-9A-Fa-f]{2})*))?(?:#((?:[0-9A-Za-z._~!$&-,;=:@/?-]|%[0-9A-Fa-f]{2})*))?'\'g\; filename […]

This also extracts all URIs (per RFC 3986, but the validity of hostnames/IPs or that the strings after percent-decoding are valid UTF-8 is not checked).

@amin @rl_dane in case you ever need a regexp to match all URIs in a string. (Surround with ^ and $ to check one for validity.)

Capture groups:

  • $1 = scheme
  • $2 = authority (use m/^(?:([^@]*)@)?(.*?)(?::([0-9]*))?$/ to split this further into $1=userinfo $2=host $3=port)
  • $3 = path
  • $4 = query
  • $5 = fragment

#URI #URL #RFC3986

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst