`

安全的反序列化,对带有双引号的内容进行发序列化,例如:编辑器

    博客分类:
  • PHP
 
阅读更多

 

/**
 * 安全的反序列化
 *
 * @author 
 * @param string $serialized 被序列化的字符串
 * @return mixed
*/
function safe_unserialize($serialized) {
    $testreg = array();
    if (is_string($serialized) && in_array(substr($serialized, 0, 2), array('i:', 's:', 'a:', 'o:', 'd:'))) {
        return @unserialize($serialized);
    }
    return false;
}

/**
 * 兼容utf8编码反序列化
 *
 * @author 
 * @param string $serialized
 * @return array
*/
function utf8_unserialize($serialized){
    if(!is_string($serialized)){ return $serialized;}
    $serialized = preg_replace('!s:(\d+):"(.*?)";!se', '"s:".strlen("$2").":\"$2\";"', $serialized );
    $serialized = safe_unserialize($serialized);
    return $serialized;
}

 

分享到:
评论

相关推荐

    一个java实现的多人在线协作编辑的markdown编辑器(课程作业).zip

    4. **JSON**:用于数据交换格式,Java通过Jackson或Gson库解析和序列化JSON,传递编辑器的文本变化和其他状态信息。 5. **数据库**:可能使用MySQL或Oracle等关系型数据库存储用户信息、文档内容等数据,同时可能...

    json数据的可视化查看、可视化编辑、Gson工具包

    例如,如何启动可视化查看工具,如何导入JSON数据到可视化编辑器,以及如何在项目中集成Gson库等。 对于JSON数据的处理,了解以下概念也很关键: - JSON对象:由键值对组成,键和值之间用冒号隔开,键值对之间用...

    利用ASP.NET MVC+Bootstrap搭建个人博客之修复UEditor编辑时Bug(四)

    为了解决这个问题,可以使用JavaScriptSerializer类在服务器端对内容进行序列化,然后将序列化后的JSON字符串赋值给UEditor。这样做可以避免因为特殊字符导致的JavaScript解析错误。序列化时,需要将双引号替换为单...

    json2 脚本 使用说明

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。...在实际开发中,务必注意JSON的格式规范,确保数据在序列化和反序列化过程中的准确性和安全性。

    quilljs-markdown-源码.rar

    当你看到"quilljs-markdown-源码.rar"或"quilljs-markdown-源码.zip"这样的文件,可以推断这可能是一个项目,其目标是将QuillJS编辑器的内容转换为Markdown格式,或者反之亦然。下面我们将深入探讨QuillJS与Markdown...

    汇总的yaml文件个人笔记

    在IT行业中,YAML(Yet Another Markup Language)是一种被广泛用于配置文件和数据序列化的语言。特别是在 Kubernetes(简称 k8s)这样的容器编排系统中,YAML 文件扮演着至关重要的角色。本篇文章将深入探讨 YAML ...

    json使用大全json使用大全json使用大全json使用大全json使用大全json使用大全json使用大全json使用大全

    键必须是字符串,用双引号`""`包围,值可以是字符串、数字、布尔值、数组、对象或null。 示例: ``` { "name": "张三", "age": 30, "isStudent": false, "hobbies": ["阅读", "编程"] } ``` 2. JSON解析...

    很好的Shell总结教程

    `sed`(stream editor)是一个强大的文本流编辑器,可用于文本替换、插入和删除等操作。 - **7.2.1 匹配打印(p)**:显示匹配的行。 - **7.2.2 匹配删除(d)**:删除匹配的行。 - **7.2.3 替换(s///)**:替换...

    json5.0.zip

    2. 可以使用单引号:在JSON5中,字符串不仅可以使用双引号("),也可以使用单引号(')进行包围,这样在处理包含大量单引号文本时,可以避免转义操作。 3. 多行字符串:JSON5允许使用反斜杠(\)后面跟着一个换行...

    JSON基础归纳整理

    JSON常用于网络数据传输,在各种编程语言中都有相应的库支持JSON数据的序列化与反序列化。 1. JSON通常与Ajax一起使用。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新...

    Markdown.md

    为了更好地展示代码,Markdown编辑器支持插入带有高亮显示的代码块: - 使用三个反引号包裹代码块,并指定语言,如: ```javascript // An highlighted block var foo = 'bar'; ``` #### 创建列表 Markdown...

    tcl简介,详细介绍了TCL脚本语言。

    - **双引号**:使用双引号来指定带有空格的参数。 例如: ```tcl set a "this string contains whitespace" ``` - **变量替换**:使用美元符号`$`来进行变量替换。 例如: ```tcl set a hello set b $a //...

    ActionScript3.0开发人员指南

    - **定义自定义JSON行为**:解释如何为自定义对象定义JSON序列化和反序列化规则,使其能够被正确转换。 #### 第8章 处理事件 事件驱动是AS3编程的核心概念,了解事件处理对于构建响应式用户界面至关重要。 - **...

    自动化测试讲稿Step俞戴龙PPT课件.pptx

    3. **字符串**:用双引号""包围的字符序列。 4. **函数**:封装特定功能的代码块,接收参数并返回结果。`InputBox`用于显示输入对话框,`MsgBox`则用于弹出消息框。 【例子解析】在提供的例子中,演示了如何使用...

    Shell编程总结

    - `$@`: 也代表所有位置参数的列表,但当在双引号内使用时,会保留每个参数的引号。 - `$0`: 脚本名称。 - `$$`: 当前进程的PID。 - `$!`: 最后一个在后台运行的进程的PID。 - `$?`: 最后一个在前台执行的命令的退出...

    JsonViewer

    开发者可以通过在线教程、书籍或课程来学习JSON,包括其语法、最佳实践以及如何在各种编程语言中序列化和反序列化JSON数据。 8. **应用场景**:JSON常用于前后端数据交换、配置文件、存储轻量级数据等。例如,API...

    Python基础学习笔记

    - **字符串**: 由单引号 `' '` 或双引号 `" "` 包围的一组字符序列。例如:`"Hello, world!"`。 - **数值**: 包括整数(如 `123`)、浮点数(如 `123.45`)、十六进制(如 `0x7B`)和八进制(如 `0173`)。 - **布尔...

Global site tag (gtag.js) - Google Analytics