`
dennisbing
  • 浏览: 159106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP的unserialize返回false

    博客分类:
  • PHP
 
阅读更多

问题描述:如下是我序列化数组之后的数据,但是取出来之后,反序列化不了。
$a = 'a:2:{i:1;a:5:{s:8:"pic_sort";i:2;s:9:"pic_check";b:1;s:10:"pic_select";i:56;s:8:"pic_path";s:1:"ergregerg";s:8:"pic_link";s:2:"wesaddasd";}i:2;a:5:{s:8:"pic_sort";i:2;s:9:"pic_check";b:0;s:10:"pic_select";i:57;s:8:"pic_path";s:10:"4444";s:8:"pic_link";s:14:"http://fafa.com";}}';
print_r(unserialize($a));

问题原因:应该是从数据库中取出的编码和页面的编码不一致造成的。

解决方案:自定义如下的函数调用就可以了
   print_r(mb_unserialize($a));
   function mb_unserialize($serial_str) { 
     $out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str ); 
     return unserialize($out); 
   } 

分享到:
评论

相关推荐

    php中unserialize返回false的解决方法

    本文实例讲述了php中unserialize返回false的解决方法,分享给大家供大家参考。具体方法如下: php 提供serialize(序列化) 与unserialize(反序列化)方法。 使用serialize序列化后,再使用unserialize反序列化就可以...

    详解php中serialize()和unserialize()函数

    - 当 `unserialize()` 遇到无法识别的格式或无效的序列化字符串时,它会返回 `false`,并可能生成一个错误。因此,在使用 `unserialize()` 前,最好先检查字符串是否有效。 - 序列化后的字符串可能包含恶意代码,...

    PHP函数大全

    如果找不到指定的字符串,则返回 false。 **语法:** ```php strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) : int|false ``` **示例:** ```php $a = "abcdefgb"; $ppp = strpos($a, 'q'); ...

    个人总结的PHP面试题

    9. PHP提供了`serialize`和`unserialize`函数,前者可以将对象序列化保存到session中,后者用于将序列化的数据恢复为原对象。 10. 为了允许函数参数为变量的引用,需要在`php.ini`中将`allow_call_time_pass_...

    PHP远程获取文件

    - **返回值**: 成功时返回字符串,失败时返回`FALSE`。 ##### 2. JSON解码与序列化 在远程获取数据时,常见的数据格式是JSON。PHP提供了两个内置函数来处理JSON数据:`json_encode`和`json_decode`。 - **`json_...

    PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)

    // 如果用户ID为空,则返回false if (empty($user_id)) { return false; } // 设置cookie setcookie("login_uid", $user_id, time() + 3600, "/", C('cookie_url')); setcookie("rdun", $this->authcode($...

    PHP工程师试题.docx

    3. PHP中的`serialize()`和`unserialize()`函数用于序列化和反序列化变量,使得变量能够在非PHP环境(如存储到文件或数据库中)下保存和恢复其原始状态。 4. `isset()`用于检测变量是否已设置并且非NULL,`empty()`...

    php5.6.x到php7.0.x特性小结

    在安全性方面,PHP 7为unserialize()函数提供了过滤功能,允许开发者指定一个白名单来控制哪些类可以从一个字符串中被反序列化,从而避免了潜在的代码注入风险。 为了调试和测试,PHP 7引入了预期断言(assert),...

    php实现将数组或对象写入到文件的方法小结【三种方法】

    如果第二个参数设置为`true`,`print_r`会返回一个字符串,这就可以用于写入文件。然而,这种方法不会像`serialize`那样保留变量的类型,只能用于简单的查看数据结构,不适合存储后恢复。 ```php $b = array ('m'...

    PHP读取配置文件类实例(可读取ini,yaml,xml等)

    `get`方法通过递归访问`$_settings`数组来取得指定的配置项,如果在数组中找不到相应的配置项,则返回`false`。 接下来,针对不同类型的配置文件,分别派生出子类来实现具体的`load`方法。例如,对于PHP格式的配置...

    php汉字转拼音的示例

    - `getChineseChar('我是作者', false, true)`:返回 "WOSHIZUOZHE" --- ##### 4. `utf8_str_split()` **描述**:此私有方法用于将字符串分割成单个字符或指定长度的子串。这是为了方便后续对每个字符进行拼音...

    php浏览历史记录的方法

    如果数据无效,函数会返回`false`,表示操作失败。 2. **获取Cookie中的浏览历史**: 使用`$this->_request->getCookie('history')`从客户端的Cookie中获取名为`history`的值。这假设`_request`是一个已经初始化的...

    PHP批斗大会之缺失的异常详解

    这种方式允许开发者在发生错误时捕获异常,而不是仅仅返回一个false值。 文章中通过具体的代码演示了如何自定义错误处理器以及如何处理异常。首先通过json_encode和unserialize函数进行数据序列化和反序列化的操作...

    浅析PHP编程中10个最常见的错误

    因此,即使某个键存在于数组中,如果其对应的值为NULL,isset()也会返回FALSE。这意味着,如果逻辑是基于isset()的结果,它可能会因为变量实际存在但值为NULL而出错。例如: ```php $data = fetchRecordFromStorage...

    php语言中使用json的技巧及json的实现代码详解

    - JSON解码过程中,JSON中的null会被转换为PHP的NULL,true和false分别对应PHP的布尔值TRUE和FALSE。 3. **类转换** 当尝试json_encode()一个PHP类的实例时,只有公有属性会被编码。常量、私有和保护属性以及方法...

    php中的常用魔术方法汇总

    返回`true`或`false`表示属性是否存在。 - `__unset()`:当使用`unset()`函数尝试删除一个不存在或不可访问的属性时,PHP会调用`__unset()`。你可以在此方法中实现实际的删除逻辑。 2. **方法重载**: - `__call...

Global site tag (gtag.js) - Google Analytics