解决PHP json_encode() 编码字符中包含<>时,转化为\u003E\u003C

摘要:
在php2/*3php中,让json_Encode不会自动转义斜杠“/”4*/5$a=array;12//一次常规更换13$a=str_ replace;14var_转储($a);15//第二个php版本˃5.416var _ dump;3、 接下来,查看第二个参数:选项引用从JSON_ HEX_ All中选择,TAG中的转换为u003C和u003E。APOS中的JSON_ HEX_ All’转换为u0027。当数组为空并且接收器需要类时,这特别有用。JSON_NUMERIC_CHECK将所有数字字符串编码为数字。JSON_PERTY_PRINT使用空格字符格式化返回的数据。

一、PHP json_encode里面经常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES

php格式化json的函数

json_encode($value,$options)

其中有2个比较常用到的参数

JSON_UNESCAPED_UNICODE(中文不转为unicode ,对应的数字 256

JSON_UNESCAPED_SLASHES (不转义反斜杠,对应的数字 64

通常json_encode只能传入一个常量,如果同时使用2个常量怎么办?

方法一:

JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320

使用方法:json_encode($arr,320);即可完成同时使用2个常量。

<?php

$arr = array('key'=>'中文/同时生效');
echo json_encode($arr,320);  //输出{"key":"中文/同时生效"}

$arr = array('key'=>'中文/同时生效');
//默认中文斜杠都会转义
echo json_encode($arr) ."\n";   //输出{"key":"\u4e2d\u6587\/\u540c\u65f6\u751f\u6548"}

//中文不转为unicode 
echo json_encode($arr,256)."\n";//输出{"key":"中文\/同时生效"}

//不转义斜杠
echo json_encode($arr,64)."\n"; //输出{"key":"\u4e2d\u6587/\u540c\u65f6\u751f\u6548"}

//中文斜杠都不转义
echo json_encode($arr,320)."\n";//输出{"key":"中文/同时生效"}

解决PHP json_encode() 编码字符中包含<>时,转化为\u003E\u003C第1张

方法二: 

$arr2 = [ 'a' => '你好', 'b'=> 'aaa/bbb\' ];
echo json_encode($arr2, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

二、php中让json_encode不自动转义斜杠“/”

最近将使用爬虫爬取的链接保存到 mysql 数据库中时,发现我将链接使用 json_encode 保存时候,在数据库中却显示了转义字符,我并不需要这转义的,看起来不清晰而且占用存储空间。

 1 <?php
 2 /*
 3 php中让json_encode不自动转义斜杠“/”
 4  */
 5 $a = array(
 6     'http://www.baidu.com',
 7     'http://www.baidu.com',
 8     'http://www.baidu.com',
 9     'http://www.baidu.com',
10     'http://www.baidu.com'
11 );
12 // 其一 正则替换
13 $a = str_replace("\\/", "/", json_encode($a));
14 var_dump($a);
15 // 其二 php版本>5.4
16 var_dump(json_encode($a,JSON_UNESCAPED_SLASHES));
三、接下来看一下第二个参数:  options参考选自

        JSON_HEX_TAG (integer)    所有的 < 和 > 转换成 \u003C 和 \u003E。 自 PHP 5.3.0 起生效。

        JSON_HEX_AMP (integer)    所有的 & 转换成 \u0026。 自 PHP 5.3.0 起生效。

        JSON_HEX_APOS (integer)   所有的 ' 转换成 \u0027。 自 PHP 5.3.0 起生效。

        JSON_HEX_QUOT (integer)   所有的 " 转换成 \u0022。 自 PHP 5.3.0 起生效。

        JSON_FORCE_OBJECT (integer)     使一个非关联数组输出一个类(Object)而非数组。 在数组为空而接受者需要一个类                (Object)的时候尤其有用。 自 PHP 5.3.0 起生效。

        JSON_NUMERIC_CHECK (integer)    将所有数字字符串编码成数字(numbers)。 自 PHP 5.3.3 起生效。

        JSON_BIGINT_AS_STRING (integer)    将大数字编码成原始字符原来的值。 自 PHP 5.4.0 起生效。

        JSON_PRETTY_PRINT (integer)    用空白字符格式化返回的数据。 自 PHP 5.4.0 起生效。

        JSON_UNESCAPED_SLASHES (integer)    不要编码 /。 自 PHP 5.4.0 起生效。

        JSON_UNESCAPED_UNICODE (integer)     以字面编码多字节 Unicode 字符(默认是编码成 \uXXXX)。 自 PHP 5.4.0 起生效。

免责声明:文章转载自《解决PHP json_encode() 编码字符中包含<>时,转化为\u003E\u003C》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用shell脚本实现用ping检查刀片服务器与主服务器之间的网络连通oracle 表空间查看与删除下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Notepad++正则表达式

      使用正则表达式可以很好地完成很多繁琐耗时的工作,以下抄录editplus正则表达式的使用,同样适用于notepad++:表达式 说明\t 制表符.\n 新行.. 匹配任意字符.| 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc".[] 匹配列表之中的任何单个字符. 例如, "[ab]" 匹配 "a" 或者 "...

linux基础知识-23

一、常识 (一) 文件 linux中将每个进程上下文之外需要保存的信息保存在文件中。linux采用简单模式保存信息,即信息以单一字节序列从头保存到尾。 序列的字节长度就是文件的长度。 文件中保存了什么?文本信息,图片信息,二进制信息等。 (二) 字节 8个位为一组,称为字节。即一个字节包含8个比特(bit)。每个bit值域{0,1},8位一共可以有2^8个...

STL之六:map/multimap用法详解

转载于:http://blog.csdn.net/longshengguoji/article/details/8547007 map/multimap     使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理。它们可根据key的排序准则自动将元素排序。mul...

shell 正则表达式与文件名匹配

1) . : 匹配任意单ASCII 字符,可以为字母,或为数字。 2) 举例: ..XC..匹配deXC1t、23XCdf 等,.w..w..w.匹配rwxrw-rw-行首以^匹配字符串或字符序列 1) ^ : 允许在一行的开始匹配字符或单词。 2) 举例: ^.01 匹配0011cx4、c01sdf 等,^d 匹配drwxr-xr-x、drw-r--r-...

angular 路由传参的三种方式

1. 问号后面带的参数 url:http://localhost:4200/news?key=japan html 调用方法: <a[routerLink]="['/news']"[queryParams]="{key:'japan'}"> 跳转 </a> ts 调用方法: // 构造函数传入 privaterouter:Rou...

CodeIgniter 的数据安全过滤全解析

http://justcoding.iteye.com/blog/546880 CodeIgniter 的数据安全过滤全解析博客分类: Codeigniter / CakePHP MySQLSQLPHP 由于对CI的SQL安全这些不放心,今天寡人啃了一下午的代码,算是对其机制比较了解了,为了让各位兄弟姐妹少走弯路,特将战果公布,希望大家喜欢。 1.无...