REBOL [ Title: "CGI Query String Decoder" File: %cgidecode.r Date: 21-May-1999 Purpose: { Parses a CGI query into a list of words and values. } Notes: { A CGI query is a list of equates in the form: word=value& The value may contain hex escape characters (%XX), and they will be decoded by this function. } Category: [cgi net 3] ] decode-cgi-query: func [ "Convert CGI argument string to a list of words and value strings" args [any-string!] "Starts at first argument word" /local list equate value name val ][ list: make block! 8 equate: [copy name to "=" "=" (append list to-set-word name) value] value: ["&" (append list none) | [copy val to "&" "&" | copy val to end] (append list to-string load insert val "%")] parse/all args [some equate | none] list ] Examples: [ probe decode-cgi-query "fred=test&said=123&check=&file=test%20this" do decode-cgi-query "fred=test&said=123&check=&file=test%20this" print [fred said check file] ] do Examples