Navigation Home / Tags / URI

ranking Sort Sort   |   date Sort Sort   |   member Sort Sort

Date Submitted Wed. Mar. 3rd, 2010 11:13 AM
Revision 1
Beginner wizard04
Tags DOMAIN | Email | IP | mailto | normalize | Parse | URI | URL
Comments 0 comments
Functions for validating, parsing, and normalizing URIs and their parts.
If you find any errors, please leave a comment.

parseURI(str) splits a URI into its parts
parseQueryNumeric(str) splits a query string into its name/value pairs; returns a 2-D array
parseQueryAssociative(str) splits a query string into its name/value pairs; returns an associative array
parseURL(str) splits a URL (i.e., http(s) scheme URI) into its parts
normalizeURLDomain(domain) converts an obscured URL domain to a more readable one
normalizeIPv4(ip) normalizes an IPv4 address
normalizeIPv6(ip) normalizes an IPv6 address
normalizeURLPath(path) converts an obscured URL path to a more readable one
parseMailto(str) splits a mailto scheme URI into its parts
normalizeEmailAddress(str) converts an obscured email address to a more readable one; unfolds and removes comments
fixURL(str, domain) attempts to fix a URL if needed
fixHyperlink(str, domain, allowMailto) attempts to fix a hyperlink address (http(s) or mailto) if needed

For URLs, note that IPvFuture addresses are not supported.
Date Submitted Wed. Mar. 3rd, 2010 11:05 AM
Revision 1
Beginner wizard04
Tags Email | mailto | Parse | regex | URI | URL | validation
Comments 0 comments
(Supported by JavaScript, maybe other languages)
Date Submitted Tue. Sep. 26th, 2006 12:56 PM
Revision 1
Scripter sehrgut
Tags C | CGI | escape | URI | URL
Comments 0 comments
Another pull from my growing-towards-beta CGI library: sgcgi_url_unescape().

Note the use strcpy, which is faster than the equivalent memmove()ing. To ensure 64-bit safety, I plan to rename this function and then conditionally compile it to point to either strcpy or a 64-bit-safe memmove() implementation of strcpy.

However, even though copy order isn't guaranteed for strcpy, on 16-bit and 32-bit systems, all known implementations copy byte-by-byte from lower addresses to higher addresses. Some 64-bit optimized compilers may copy 8-byte chunks, making the assumption of full linearity unstable at best.

I know it sounds like I'm justifying use of nonstandard code for convenience . . . *blush* . . . it's just something that putting in a -DPEDANTIC type of preprocessor flag could fix if broken, and its SO much faster!