proto urlencode_array(array formdata [, string numeric_prefix])

Purpose: Generate a form encoded query string from an associative (or
indexed) array.

Example:

  $formdata = array('page'=>'home',

'users'=>array('bob'=>array('fname'=>'Bob','lname'=>'Smith'),

'jdoe'=>array('fname'=>'Jane','lname'=>'Doe')),
                               'errors'=>array('missing date','missing
time','sums not =='),
                                'other data');

  echo urlencode_array($formdata);
  /* outputs the following

page=home&users[bob][fname]=Bob&users[bob][lname]=Smith&users[jdoe][fname]=J
ane&users[jdoe][lname]=Doe&errors[0]=missing+date&errors[1]=missing+time&err
ors[2]=sums+not+%3D%3D&0=other+data
 */

Example 2:

  Same array as above but encoded using a prefix for numeric values:

  echo urlencode_array($formdata, 'misc_');

page=home&users[bob][fname]=Bob&users[bob][lname]=Smith&users[jdoe][fname]=J
ane&users[jdoe][lname]=Doe&errors[0]=missing+date&errors[1]=missing+time&err
ors[2]=sums+not+%3D%3D&misc_0=other+data


Note Example 2 allows numerically indexed arrays to generate query strings
which will yield legal variable names, but doesn't enforce such behavior.
Also, the numeric_prefix only applies to the root array's indexes since
subsequence arrays may be indexed without compromise.

The patch is available at:
http://frankenbox.alphaweb.net/test/urlencode_array.diff.txt

The underlying function php_url_encode_hash() is meant for later use in
http_request() and for handling a context option in the http:// wrapper, but
it seems as though there's no harm exporting it to userland. (Hence the
addition of urlencode_array() -- I'm flexible on the name, array_urlencode()
has been suggested as well)

I'm looking for a couple +1s before I actually commit this though.

-Sara

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to