mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Implemented FR #49366 (Make slash escaping optional in json_encode()).
This commit is contained in:
parent
aa297b60a3
commit
726fe638bb
5 changed files with 21 additions and 2 deletions
1
NEWS
1
NEWS
|
@ -118,6 +118,7 @@
|
||||||
|
|
||||||
- Implemented FR #52555 (Ability to get HTTP response code). (Paul Dragoonis)
|
- Implemented FR #52555 (Ability to get HTTP response code). (Paul Dragoonis)
|
||||||
- Implemented FR #51295 (SQLite3::busyTimeout not existing). (Mark)
|
- Implemented FR #51295 (SQLite3::busyTimeout not existing). (Mark)
|
||||||
|
- Implemented FR #49366 (Make slash escaping optional in json_encode()). (Adam)
|
||||||
- Implemented FR #48632 (OpenSSL AES support). (yonas dot y
|
- Implemented FR #48632 (OpenSSL AES support). (yonas dot y
|
||||||
at gmail dot com, Pierre)
|
at gmail dot com, Pierre)
|
||||||
- Implemented FR #42060 (Add paged Results support). (ando@OpenLDAP.org,
|
- Implemented FR #42060 (Add paged Results support). (ando@OpenLDAP.org,
|
||||||
|
|
|
@ -235,7 +235,7 @@ UPGRADE NOTES - PHP X.Y
|
||||||
|
|
||||||
f. New global constants
|
f. New global constants
|
||||||
|
|
||||||
-
|
- JSON_UNESCAPED_SLASHES
|
||||||
|
|
||||||
g. New classes
|
g. New classes
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,7 @@ static PHP_MINIT_FUNCTION(json)
|
||||||
REGISTER_LONG_CONSTANT("JSON_HEX_QUOT", PHP_JSON_HEX_QUOT, CONST_CS | CONST_PERSISTENT);
|
REGISTER_LONG_CONSTANT("JSON_HEX_QUOT", PHP_JSON_HEX_QUOT, CONST_CS | CONST_PERSISTENT);
|
||||||
REGISTER_LONG_CONSTANT("JSON_FORCE_OBJECT", PHP_JSON_FORCE_OBJECT, CONST_CS | CONST_PERSISTENT);
|
REGISTER_LONG_CONSTANT("JSON_FORCE_OBJECT", PHP_JSON_FORCE_OBJECT, CONST_CS | CONST_PERSISTENT);
|
||||||
REGISTER_LONG_CONSTANT("JSON_NUMERIC_CHECK", PHP_JSON_NUMERIC_CHECK, CONST_CS | CONST_PERSISTENT);
|
REGISTER_LONG_CONSTANT("JSON_NUMERIC_CHECK", PHP_JSON_NUMERIC_CHECK, CONST_CS | CONST_PERSISTENT);
|
||||||
|
REGISTER_LONG_CONSTANT("JSON_UNESCAPED_SLASHES", PHP_JSON_UNESCAPED_SLASHES, CONST_CS | CONST_PERSISTENT);
|
||||||
|
|
||||||
REGISTER_LONG_CONSTANT("JSON_ERROR_NONE", PHP_JSON_ERROR_NONE, CONST_CS | CONST_PERSISTENT);
|
REGISTER_LONG_CONSTANT("JSON_ERROR_NONE", PHP_JSON_ERROR_NONE, CONST_CS | CONST_PERSISTENT);
|
||||||
REGISTER_LONG_CONSTANT("JSON_ERROR_DEPTH", PHP_JSON_ERROR_DEPTH, CONST_CS | CONST_PERSISTENT);
|
REGISTER_LONG_CONSTANT("JSON_ERROR_DEPTH", PHP_JSON_ERROR_DEPTH, CONST_CS | CONST_PERSISTENT);
|
||||||
|
@ -372,7 +373,11 @@ static void json_escape_string(smart_str *buf, char *s, int len, int options TSR
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '/':
|
case '/':
|
||||||
|
if (options & PHP_JSON_UNESCAPED_SLASHES) {
|
||||||
|
smart_str_appendc(buf, '/');
|
||||||
|
} else {
|
||||||
smart_str_appendl(buf, "\\/", 2);
|
smart_str_appendl(buf, "\\/", 2);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '\b':
|
case '\b':
|
||||||
|
|
|
@ -59,6 +59,7 @@ extern zend_class_entry *php_json_serializable_ce;
|
||||||
#define PHP_JSON_HEX_QUOT (1<<3)
|
#define PHP_JSON_HEX_QUOT (1<<3)
|
||||||
#define PHP_JSON_FORCE_OBJECT (1<<4)
|
#define PHP_JSON_FORCE_OBJECT (1<<4)
|
||||||
#define PHP_JSON_NUMERIC_CHECK (1<<5)
|
#define PHP_JSON_NUMERIC_CHECK (1<<5)
|
||||||
|
#define PHP_JSON_UNESCAPED_SLASHES (1<<6)
|
||||||
|
|
||||||
/* Internal flags */
|
/* Internal flags */
|
||||||
#define PHP_JSON_OUTPUT_ARRAY 0
|
#define PHP_JSON_OUTPUT_ARRAY 0
|
||||||
|
|
12
ext/json/tests/json_encode_unescaped_slashes.phpt
Normal file
12
ext/json/tests/json_encode_unescaped_slashes.phpt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
--TEST--
|
||||||
|
json_decode() tests
|
||||||
|
--SKIPIF--
|
||||||
|
<?php if (!extension_loaded("json")) print "skip"; ?>
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
var_dump(json_encode('a/b'));
|
||||||
|
var_dump(json_encode('a/b', JSON_UNESCAPED_SLASHES));
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
string(6) ""a\/b""
|
||||||
|
string(5) ""a/b""
|
Loading…
Add table
Add a link
Reference in a new issue