**PHP转义Json里的特殊字符的函数

http://www.banghui.org/11332.html

在给一个 App 做 API,从服务器端的 MySQL 取出数据,然后生成 JSON。数据中有个字段叫 content,里面保存了文章内容,含有大量 HTML 标签,这个字段在转 json 的时候需要转义,因为有大量的特殊字符会破坏 json 的结构。

比如这么一段 content:

  1. ‘Lorem ipsum "dolor" sit amet, consectetur \ adipiscing elit.‘

则必须要转化为:

  1. Lorem ipsum \"dolor\" sit amet,\nconsectetur \\ adipiscing elit.

那么有哪些字符是需要转义的呢?看下图:

如果 PHP 版本 > 5.2,json_encode 自带转义。如果是旧版本的 PHP 则可以用下面的函数。

# list from www.json.org: (\b backspace, \f formfeed)
public function escapeJsonString($value) {
    $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c");
    $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b");
    $result = str_replace($escapers, $replacements, $value);
    return $result;
}

经常会用到,记录一下,希望对你有帮助。

时间: 2024-10-17 15:13:30

**PHP转义Json里的特殊字符的函数的相关文章

老版本PHP转义Json里的特殊字符的函数

在给一个 App 做 API,从服务器端的 MySQL 取出数据,然后生成 JSON.数据中有个字段叫 content,里面保存了文章内容,含有大量 HTML 标签,这个字段在转 json 的时候需要转义,因为有大量的特殊字符会破坏 json 的结构. 比如这么一段 content: [php] view plaincopy 'Lorem ipsum "dolor" sit amet, consectetur \ adipiscing elit.' 则必须要转化为: [php] vie

*Bash:如何用bash 转义 URL里的特殊字符,让其在sed不会产生歧义?

我们在工作中,经常需要使用sed替换.增加文本中的URL.但是,我们经常会遇到URL中的特殊字符在sed中产生歧义,以至于在编写bash脚本的时候,花去大量时间测试.那么什么特殊字符会产生歧义呢? #这些都需要转义&, |, \, /, ^, *, (, ), [, ], {, }, `,? 其中,以“&,/,?“为最主要需要转移的.例如: [[email protected] test]$ url="http://www.baidu.com/cgi-bin?a=dasdfd&a

iOS 去除JSON里的转义符

iOS 去除JSON里的转义符 今天帮朋友弄这个问题,json返回全都是带'\'的,于是要去掉这个反斜杠,但是OC里面的'\'是转义符,不能直接用@"\"之类的表示,一顿搜索之后,找到了OC对转义字符的表示方法,如下: \a - Sound alert\b - 退格\f - Form feed\n - 换行\r - 回车\t - 水平制表符\v - 垂直制表符\\ - 反斜杠\" - 双引号\' - 单引号 那么知道如何表示'\',去掉这个就是一个遍历的事了.代码如下: NS

JS里关于特殊字符的转义

重定向的url里含有百分号“%”,遇到了apache 找不到该文件的报错.通过查询相关文档,知道了原来是url里含有特殊字符要转码才能定位到正确的地址.比如"%"要转码为"%25","&"要转码为"%26",等等. 在javascript脚本里,有现成的转码函数可以调用,有3个:1,采用ISO Latin字符集对指定的字符串进行编码.所有的空格符.标点符号.特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编

.net 过滤json等字符串里的特殊字符

JSON现在是很常见的处理数据的方式了,但是在使用JSON的时候,有些特殊字符会让我们得到非预期的结果.JSon数据中常见的特殊字符有:引号,正斜杠,反斜杠,换行符号等.下面介绍JSON中的特殊字符该如何去掉的方法 使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致JSON数据的解析出错.这个时候,就需要将JSON中的特殊字符过滤掉. 用下面的方法对即将向前台输出的json字符串进行处理,可以解决键盘上能输入的所有特殊字符问题. 1 /// <summary> 2 //

Javascript转义字符串中的特殊字符处理

2014-08-08 Web应用系统中,客户端发送请求到服务器,请求中的字符串参数,在被序列化成json过程中有些特殊字符会被空格代, 导致传递到服务器端再解析的时候,原本的输入参数就会被改变. 目前遇到的特殊字符有加号(+)与连接号(&). 临时解决方案: 前端:定义一个函数,在函数中预先处理, 1 function EncodeURIFilter(str) { 2 if(str != null && str != "") { 3 str = str.repl

curses不是linux里默认的C函数库

今天在调试一个贪吃蛇程序时,出现如下错误: [[email protected] c++]$ g++ snack.cpp -o snack/tmp/ccCuZ3Jm.o:在函数‘playgame(int, int)’中:snack.cpp:(.text+0xce):对‘erase’未定义的引用snack.cpp:(.text+0xed):对‘mvprintw’未定义的引用snack.cpp:(.text+0x140):对‘mvprintw’未定义的引用snack.cpp:(.text+0x166

请求(Request)的参数(Parameter)里包含特殊字符(#等)的正确处理方式

遇到一个问题 在一个地址链接(URL)里使用  url?param1=val1&param2=val2  的方式传递参数,结果在获取参数值时发现不是当初设定的值. 具体案例 以特殊字符井号(#)为例. 部分参数值丢了 JS里设置参数 window.location="some_web_project/xxx.jsp?param_key=abc#xyz"; Java中取参数值 Sting paramVal = request.getParameter("param_ke

修改和获取web.config或app.config文件appSettings配置节中的Add里的value属性 函数

1: /// <summary> 2: /// 修改web.config或app.config文件appSettings配置节中的Add里的value属性 3: /// </summary> 4: /// <remarks> 5: /// 注意,调用该函数后,会使整个Web Application重启,导致当前所有的会话丢失 6: /// </remarks> 7: /// <param name="key">要修改的键key