Alright, here goes.

post.php
<?php
$data="data=This is my data & it is really great";
$json_data=json_encode($data);

$request ="GET /test.php HTTP/1.0\n";
$request.="Host: something.com\n";
$request.="Content-Type: application/x-www-form-urlencoded\n"
$request.="Content-Length: ".strlen($json_data)."\n";
$request.="\n";
$fsock=fsockopen("http://server.com ",80);
fwrite($fsock,$request);

$response=fread($fsock,2048);
echo $response;
?>

test.php:
<?php
var_dump($_POST);
?>

Under php-5.2.1, the output would be:

array(4) {
  ["data"]=>
  string(16) "This is my data "

  ["it is really great"]=>
  string(0) ""
}

With this patch it would be:

array(4) {
  ["data"]=>
  string(42) "This is my data \u0026 it is really great"
}


Tyler
-----Original Message-----
From: Antony Dovgal [mailto:[EMAIL PROTECTED] 
Sent: Friday, April 27, 2007 3:59 PM
To: Tyler Lawson
Cc: internals@lists.php.net
Subject: Re: [PHP-DEV] JSON ampersand patch

On 04/27/2007 11:39 PM, Tyler Lawson wrote:
> Hello,
> 
> I hope this is the right place for this, as I'd like to post a patch for
> your consideration to the way the JSON handles ampersands.  I have had
> problems sending JSON data back and forth over POST requests, where an
> ampersand separates variables.  This patch will convert "&" into "\u0026",
> which will allow ampersands to travel freely and be parsed by any valid
JSON
> decoder.

I believe a short reproduce case would explain it better.
 
> This has been applied against php-5.2.1
> 
> --- json.c      2007-01-12 07:17:32.000000000 -0500
> +++ my_json.c    2007-04-27 15:12:44.000000000 -0400
> @@ -301,6 +301,11 @@
>                      smart_str_appendl(buf, "\\t", 2);
>                  }
>                  break;
> +            case '&':
> +                {
> +                    smart_str_appendl(buf, "\\u0026", 6);
> +                }
> +                break;
>              default:
>                  {
>                      if (us < ' ' || (us & 127) == us)
> 
> 
> Tyler
> 


-- 
Wbr, 
Antony Dovgal

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

Reply via email to