Difference between revisions of "LlEscapeURL"

From Second Life Wiki
Jump to: navigation, search
m (oops)
m
Line 1: Line 1:
 
{{LSL_Function
 
{{LSL_Function
 
|func_id=307|func_sleep=0.0|func_energy=10.0
 
|func_id=307|func_sleep=0.0|func_energy=10.0
|func=llEscapeURL|return_type=string|p1_type=string|p1_name=url|p1_desc=A valid and unescaped URL.
+
|func=llEscapeURL|return_type=string|p1_type=string|p1_name=url|p1_desc=A (preferably valid and unescaped URL) string.
 
|func_footnote=To clarify, numbers and ASCII7 alphabetical characters are NOT escaped. If a character requires more then one byte in {{Wikipedia|UTF-8|UTF-8}} {{Wikipedia|Byte|byte}} form then it returns multiple <code>"%xx"</code> sequences chained together.
 
|func_footnote=To clarify, numbers and ASCII7 alphabetical characters are NOT escaped. If a character requires more then one byte in {{Wikipedia|UTF-8|UTF-8}} {{Wikipedia|Byte|byte}} form then it returns multiple <code>"%xx"</code> sequences chained together.
 
|func_desc
 
|func_desc
Line 12: Line 12:
  
 
{{{!}} class="lltable" style="font-size: 85%; text-align: center; width: auto; border=1px;"
 
{{{!}} class="lltable" style="font-size: 85%; text-align: center; width: auto; border=1px;"
! description of URL part
+
! URL part
 
! example
 
! example
 
{{!}}-
 
{{!}}-
{{!}} Base URL
+
{{!}} base URL
 
{{!}} <font color="green"><nowiki>https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322</nowiki></font>
 
{{!}} <font color="green"><nowiki>https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322</nowiki></font>
 
{{!}}-
 
{{!}}-
{{!}} Trailing path information
+
{{!}} trailing path
 
{{!}} <font color="blue">/foo/bar</font>
 
{{!}} <font color="blue">/foo/bar</font>
 
{{!}}-
 
{{!}}-
{{!}} Any query arguments, the text past the first "?" in the URL
+
{{!}} query string past the first "?" in the URL
 
{{!}} <font color="red">arg=gra</font>
 
{{!}} <font color="red">arg=gra</font>
 
{{!}}}
 
{{!}}}

Revision as of 11:10, 27 January 2014

Summary

Function: string llEscapeURL( string url );

Returns a string that is the escaped/encoded version of url, replacing spaces with "%20" etc. The function will escape any character not in [a-zA-Z0-9] to "%xx" where "xx" is the hexadecimal value of the character in UTF-8 byte form.

• string url A (preferably valid and unescaped URL) string.

To clarify, numbers and ASCII7 alphabetical characters are NOT escaped. If a character requires more then one byte in UTF-8 byte form then it returns multiple "%xx" sequences chained together.

This function is similar to functions (e.g. rawurlencode, encodeURIComponent) found in many other languages: 
PHP
rawurlencode
ECMAScript
encodeURIComponent

Caveats

The function is not appropriate for escaping a url all at once, because the ":" after the protocol, and all of the "/" characters delimiting the various parts, will be escaped. Instead, build the url in parts; escaping parts of the path and query string arguments as needed.

Sample URL: https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322/foo/bar?arg=gra

URL part example
base URL https://sim3015.aditi.lindenlab.com:12043/cap/a7717681-2c04-e4ac-35e3-1f01c9861322
trailing path /foo/bar
query string past the first "?" in the URL arg=gra
All Issues ~ Search JIRA for related Bugs

Examples

<lsl> string str = "http://wiki.secondlife.com/wiki/LSL Portal";

default {

   state_entry()
   {
       llOwnerSay("Plain string:\n\t" + str);
       // output: "http://wiki.secondlife.com/wiki/LSL Portal"

       llOwnerSay("Escaped string:\n\t" + llEscapeURL(str));
       // output: "http%3A%2F%2Fwiki%2Esecondlife%2Ecom%2Fwiki%2FLSL%20Portal"

       llOwnerSay("Escaped string unescaped again:\n\t" + llUnescapeURL( llEscapeURL(str) ));
       // output: "http://wiki.secondlife.com/wiki/LSL Portal"

       // because escaping and unescaping are exact opposite
       // and unescaping an escaped string returns the original


       //  For readability's sake it would make more sense to do:
       llOwnerSay("For readability's sake:\n\t" + "http://wiki.secondlife.com/wiki/" + llEscapeURL("LSL Portal"));
       // output: "http://wiki.secondlife.com/wiki/LSL%20Portal"
   }

}

</lsl>

See Also

Functions

• llUnescapeURL

Articles

• UTF-8
• Base64

Deep Notes

History

  • Prior to SL versions 1.19.1.81992, this function was limited to returning a maximum of 254 characters. SVC-470

Search JIRA for related Issues

Signature

function string llEscapeURL( string url );