std.uri
Encode and decode Uniform Resource Identifiers (URIs). URIs are used in internet transfer protocols. Valid URI characters consist of letters, digits, and the characters ;/?:@&=+$,-.!~*'() Reserved URI characters are ;/?:@&=+$, Escape sequences consist of % followed by two hex digits.
- See Also:
-
RFC 3986
Wikipedia
- License:
-
Boost License 1.0.
- Authors:
-
Walter Bright
- Source
- std/uri.d
- class URIException: object.Exception;
-
This Exception is thrown if something goes wrong when encoding or decoding a URI.
- Examples:
-
import std.exception : assertThrown;
assertThrown!URIException("%ab".decode);
- string decode(Char)(scope const(Char)[] encodedURI)
Constraints: if (isSomeChar!Char);
-
Decodes the URI string encodedURI into a UTF-8 string and returns it. Escape sequences that resolve to reserved URI characters are not replaced. Escape sequences that resolve to the '#' character are not replaced.
- Examples:
-
writeln("foo%20bar".decode);
writeln("%3C%3E.@.%E2%84%A2".decode);
writeln("foo&/".decode);
writeln("!@#$&*(".decode);
- string decodeComponent(Char)(scope const(Char)[] encodedURIComponent)
Constraints: if (isSomeChar!Char);
-
Decodes the URI string encodedURI into a UTF-8 string and returns it. All escape sequences are decoded.
- Examples:
-
writeln("foo%2F%26".decodeComponent);
writeln("dl%C3%A4ng%20r%C3%B6cks".decodeComponent);
writeln("!%40%23%24%25%5E%26*(".decodeComponent);
- string encode(Char)(scope const(Char)[] uri)
Constraints: if (isSomeChar!Char);
-
Encodes the UTF-8 string uri into a URI and returns that URI. Any character not a valid URI character is escaped. The '#' character is not escaped.
- Examples:
-
writeln("foo bar".encode);
writeln("<>.@.™".encode);
writeln("foo/#?a=1&b=2".encode);
writeln("dlang+rocks!".encode);
writeln("!@#$%^&*(".encode);
- string encodeComponent(Char)(scope const(Char)[] uriComponent)
Constraints: if (isSomeChar!Char);
-
Encodes the UTF-8 string uriComponent into a URI and returns that URI. Any character not a letter, digit, or one of -.!~*'() is escaped.
- Examples:
-
writeln("!@#$%^&*(".encodeComponent);
writeln("<>.@.™".encodeComponent);
writeln("foo/&".encodeComponent);
writeln("dläng röcks".encodeComponent);
writeln("dlang+rocks!".encodeComponent);
- ptrdiff_t uriLength(Char)(scope const(Char)[] s)
Constraints: if (isSomeChar!Char);
-
Does string s[] start with a URL?
- Returns:
- -1 it does not len it does, and s[0 .. len] is the slice of s[] that is that URL
- Examples:
-
string s1 = "http://www.digitalmars.com/~fred/fredsRX.html#foo end!";
writeln(uriLength(s1));
string s2 = "no uri here";
writeln(uriLength(s2));
assert(uriLength("issue 14924") < 0);
- ptrdiff_t emailLength(Char)(scope const(Char)[] s)
Constraints: if (isSomeChar!Char);
-
Does string s[] start with an email address?
- Returns:
- -1 it does not len it does, and s[0 .. i] is the slice of s[] that is that email address
- References
- RFC2822
- Examples:
-
string s1 = "my.e-mail@www.example-domain.com with garbage added";
writeln(emailLength(s1));
string s2 = "no email address here";
writeln(emailLength(s2));
assert(emailLength("issue 14924") < 0);