使用json_encode()函数时如果没有设置第二个参数PHP会默认将斜杠进行转义,还会将中文进行unicode编码。
要解决斜杠转义问题第二个参数可以传递PHP常量JSON_UNESCAPED_SLASHES,要解决中文unicode编码问题第二个参数可以传递PHP常量JSON_UNESCAPED_UNICODE,但是如果要同时解决斜杠转义和中文unicode编码就要用另一种方式了。
实际上常量JSON_UNESCAPED_SLASHES和JSON_UNESCAPED_UNICODE都是一个整数,而且相关常量还不止这两个,具体可看下面的列表:
JSON_HEX_TAG => 1
JSON_HEX_AMP => 2
JSON_HEX_APOS => 4
JSON_HEX_QUOT => 8
JSON_FORCE_OBJECT => 16
JSON_NUMERIC_CHECK => 32
JSON_UNESCAPED_SLASHES => 64
JSON_PRETTY_PRINT => 128
JSON_UNESCAPED_UNICODE => 256
JSON_ERROR_DEPTH => 1
JSON_ERROR_STATE_MISMATCH => 2
JSON_ERROR_CTRL_CHAR => 3
JSON_ERROR_SYNTAX => 4
JSON_ERROR_UTF8 => 5
JSON_OBJECT_AS_ARRAY => 1
JSON_BIGINT_AS_STRING => 2
要同时使用多个常量只要将其代表的数值加起来即可,如我们要同时解决斜杠转义和中文unicode编码的问题就需要同时使用JSON_UNESCAPED_SLASHES和JSON_UNESCAPED_UNICODE,而两者数值加起来是320=64+256,即json_encode($arr, 320)。