php:unserialize返回false但在单个php文件中:return array

时间:2014-07-28 23:02:32

标签: php

我真的不知道为什么。

我有一个sql查询,它获得了一个serlialized字符串。 然后我想反序列化它,返回是bool(false)!

所以我把字符串转储并放在外部文件中:

$str = 'a:1:{i:4;s:13:"notifications";}';
print_r(unserialize($str));

神奇的是,每件事都有效! 它实际上是相同的字符串。

如果有人对此有所了解。非常感谢您的帮助!

EDIT尝试了更多的东西:

$DB->query("
    SELECT xxxxxx
    FROM xxxxxx
    WHERE ID = $xxxx");
$Paranoia = $DB->next_record()[0];
$arr = array(0=>'test');
$Paranoia2 = serialize($arr); 
var_dump($Paranoia);
echo '<br />';
var_dump($Paranoia2);
echo '<br />';
var_dump(unserialize(db_string($Paranoia)));
echo '<br />';
var_dump(unserialize($Paranoia2));

返回:

string(41) "a:1:{i:0;s:13:"notifications";}" 
string(21) "a:1:{i:0;s:4:"test";}" 
bool(false) 
array(1) { [0]=> string(4) "test" }

1 个答案:

答案 0 :(得分:1)

好的,如下所示:

string(41) "a:1:{i:0;s:13:"notifications";}" 

或字符串是31而不是41 ......

SOLUTION FOUND - Same strings, but var_dump() says one is 5 characters longer

所以解决方案:

html_entity_decode($title, ENT_QUOTES);