问题描述:如下是我序列化数组之后的数据,但是取出来之后,反序列化不了。
$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 提供serialize(序列化) 与unserialize(反序列化)方法。 使用serialize序列化后,再使用unserialize反序列化就可以...
- 当 `unserialize()` 遇到无法识别的格式或无效的序列化字符串时,它会返回 `false`,并可能生成一个错误。因此,在使用 `unserialize()` 前,最好先检查字符串是否有效。 - 序列化后的字符串可能包含恶意代码,...
如果找不到指定的字符串,则返回 false。 **语法:** ```php strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) : int|false ``` **示例:** ```php $a = "abcdefgb"; $ppp = strpos($a, 'q'); ...
9. PHP提供了`serialize`和`unserialize`函数,前者可以将对象序列化保存到session中,后者用于将序列化的数据恢复为原对象。 10. 为了允许函数参数为变量的引用,需要在`php.ini`中将`allow_call_time_pass_...
- **返回值**: 成功时返回字符串,失败时返回`FALSE`。 ##### 2. JSON解码与序列化 在远程获取数据时,常见的数据格式是JSON。PHP提供了两个内置函数来处理JSON数据:`json_encode`和`json_decode`。 - **`json_...
// 如果用户ID为空,则返回false if (empty($user_id)) { return false; } // 设置cookie setcookie("login_uid", $user_id, time() + 3600, "/", C('cookie_url')); setcookie("rdun", $this->authcode($...
3. PHP中的`serialize()`和`unserialize()`函数用于序列化和反序列化变量,使得变量能够在非PHP环境(如存储到文件或数据库中)下保存和恢复其原始状态。 4. `isset()`用于检测变量是否已设置并且非NULL,`empty()`...
在安全性方面,PHP 7为unserialize()函数提供了过滤功能,允许开发者指定一个白名单来控制哪些类可以从一个字符串中被反序列化,从而避免了潜在的代码注入风险。 为了调试和测试,PHP 7引入了预期断言(assert),...
如果第二个参数设置为`true`,`print_r`会返回一个字符串,这就可以用于写入文件。然而,这种方法不会像`serialize`那样保留变量的类型,只能用于简单的查看数据结构,不适合存储后恢复。 ```php $b = array ('m'...
`get`方法通过递归访问`$_settings`数组来取得指定的配置项,如果在数组中找不到相应的配置项,则返回`false`。 接下来,针对不同类型的配置文件,分别派生出子类来实现具体的`load`方法。例如,对于PHP格式的配置...
- `getChineseChar('我是作者', false, true)`:返回 "WOSHIZUOZHE" --- ##### 4. `utf8_str_split()` **描述**:此私有方法用于将字符串分割成单个字符或指定长度的子串。这是为了方便后续对每个字符进行拼音...
如果数据无效,函数会返回`false`,表示操作失败。 2. **获取Cookie中的浏览历史**: 使用`$this->_request->getCookie('history')`从客户端的Cookie中获取名为`history`的值。这假设`_request`是一个已经初始化的...
这种方式允许开发者在发生错误时捕获异常,而不是仅仅返回一个false值。 文章中通过具体的代码演示了如何自定义错误处理器以及如何处理异常。首先通过json_encode和unserialize函数进行数据序列化和反序列化的操作...
因此,即使某个键存在于数组中,如果其对应的值为NULL,isset()也会返回FALSE。这意味着,如果逻辑是基于isset()的结果,它可能会因为变量实际存在但值为NULL而出错。例如: ```php $data = fetchRecordFromStorage...
- JSON解码过程中,JSON中的null会被转换为PHP的NULL,true和false分别对应PHP的布尔值TRUE和FALSE。 3. **类转换** 当尝试json_encode()一个PHP类的实例时,只有公有属性会被编码。常量、私有和保护属性以及方法...
返回`true`或`false`表示属性是否存在。 - `__unset()`:当使用`unset()`函数尝试删除一个不存在或不可访问的属性时,PHP会调用`__unset()`。你可以在此方法中实现实际的删除逻辑。 2. **方法重载**: - `__call...