NYCPHP Meetup

[nycphp-talk] How to pass on variables with POST without using a form

Dan Cech dcech at phpwerx.net
Thu Sep 21 11:44:09 EDT 2006


Baer, Jon wrote:
> It's also available as a PEAR PHP-Compact function ...
> 
> http://pear.php.net/manual/en/package.php.php-compat.components.php 
> 
> - Jon

Yeah, I was going to mention that, but in general I've been underwhelmed
by PHP_Compat.  In this case, it seems to be unnecessarily complicated
and doesn't accept the third $arg_separator argument.

Dan

> -----Original Message-----
> From: talk-bounces at lists.nyphp.org [mailto:talk-bounces at lists.nyphp.org]
> On Behalf Of Dan Cech
> Sent: Thursday, September 21, 2006 7:28 AM
> To: NYPHP Talk
> Subject: Re: [nycphp-talk] How to pass on variables with POST without
> using a form
> 
> Cliff Hirsch wrote:
>>> Why not just use the built-in function http_build_query?
> 
> Maybe because it's php5-only?
> 
> If you want a php4 version, try this function I just cooked up which
> duplicates all the documented functionality of the php5 function.
> 
> function http_build_query($formdata,$numeric_prefix = '',$arg_separator
> = null,$_parent = null) {
>     if (empty($arg_separator)) {
>         $arg_separator = ini_get('arg_separator.output');
>     }
> 
>     $postdata = array();
>     foreach ($formdata as $k => $v) {
>         if (!empty($_parent)) {
>             $k = $_parent .'['. urlencode($k) .']';
>         } else {
>             if (is_numeric($k)) {
>                 $k = $numeric_prefix . $k;
>             }
>             $k = urlencode($k);
>         }
>         if (is_array($v)) {
>             $postdata[] =
> http_build_query($v,$numeric_prefix,$arg_separator,$k);
>         } else {
>             $postdata[] = $k .'=' . urlencode($v);
>         }
>     }
> 
>     return implode($arg_separator,$postdata);
> }
> 
> Dan
> 
>>> -------
>>> The easiest way I've found to do this is as follows:
>>>
>>> $myvars = array(
>>>   'item1' => 'value1',
>>>   'item2' => 'value2',
>>> );
>>>
>>> $postdata = array();
>>> foreach ($myvars as $k => $v) {
>>>   $postdata[] = urlencode($k) .'=' . urlencode($v); } $postdata = 
>>> implode('&',$postdata);




More information about the talk mailing list