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: [email protected]
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