【发布时间】:2019-01-27 07:58:51
【问题描述】:
当我在使用 php 5.6 之前取消序列化它不使用 php 7.2 时,我已经序列化了一个图像路径并保存到数据库。
a:1:{i:0;a:3:{s:8:"fullpath";s:77:"https://www.educationfolder.com/files1/user-pics/4/142944540636159131_ml.jpg";s:5:"image";s:27:"4/142944540636159131_ml.jpg";s:10:"mention_id";s:3:"398";}}
function made for this are
function maybe_serialize( $data ) {
if ( is_array( $data ) || is_object( $data ) )
return serialize( $data );
// Double serialization is required for backward compatibility.
// See http://core.trac.wordpress.org/ticket/12930
if ( is_serialized( $data, false ) )
return serialize( $data );
return $data;
}
function maybe_unserialize( $original ) {
if ( is_serialized( $original ) ) // don't attempt to unserialize data that wasn't serialized going in
return @unserialize( $original );
return $original;
}
现在我正在这样做
$imageArr = array();
$imageArr = maybe_unserialize(trim($image_url));
它不工作
【问题讨论】:
-
“不工作”是什么意思?
-
我意识到我们已经将“上传”替换为“files1”,这就是为什么图像字符数在序列化字符串中为 77,但实际字符为 76,这需要修复以删除减号中的 1 个值那里
-
你的数据库列是二进制类型吗?您不能将
serialize()的输出存储在例如VARCHAR.
标签: php serialization