PHP取消序列化序列化数据

PHP取消序列化序列化数据,php,wordpress,serialization,Php,Wordpress,Serialization,我对序列化数据的非序列化有问题 数据被序列化并保存在数据库中 此数据包含一个上载的.csv url,我想将其返回给fgetcsv fgetcsv需要一个数组,现在给出了一个字符串,所以我需要取消序列化数据,但这会给我带来错误 我在网上找到了这个,但似乎不起作用。所以我希望有人能告诉我哪里出了问题: 以下是错误: Notice: unserialize() [function.unserialize]: Error at offset 0 of 1 bytes in /xxx/public_htm

我对序列化数据的非序列化有问题

数据被序列化并保存在数据库中

此数据包含一个上载的.csv url,我想将其返回给fgetcsv

fgetcsv需要一个数组,现在给出了一个字符串,所以我需要取消序列化数据,但这会给我带来错误

我在网上找到了这个,但似乎不起作用。所以我希望有人能告诉我哪里出了问题:

以下是错误:

Notice: unserialize() [function.unserialize]: Error at offset 0 of 1 bytes in /xxx/public_html/multi-csv-upload.php on line 163
我发现这意味着序列化数据中存在某些字符,使得文件在非序列化后损坏
(“,”,:,;)

第163行:

jj_readcsv(unserialize ($value[0]),true);` // this reads the url of the uploaded csv and tries to open it.
以下是使数据序列化的代码:

update_post_meta($post_id, 'mcu_csv', serialize($mcu_csv));
我是WordPress

以下是以下内容的输出:

echo '<pre>';
print_r(unserialize($value));
echo '</pre>';
'; ob_start(); jj_readcsv(未序列化($value[0]),true); $link=ob_get_contents(); ob_end_clean(); $editor_id='my_uploaded_csv'; wp_编辑器($link,$editor_id); $metabox_content=''; echo$metabox_内容; $images=unserialize($value); $script=” itemsCount=0;"; 如果(!空($images)) { foreach($images作为$image) { $script.=“addRow('{$image}');”; } } $script.=“”; echo$脚本; } 函数排队_脚本($hook) { if('post.php'!=$hook和'post edit.php'!=$hook和'post new.php'!=$hook) 返回; wp_-enqueue_-script('mcu_-script',plugin_-dir_-url('uu-FILE.'uu.'js',数组('jquery')); }
您正试图访问序列化字符串的第一个元素:

//save
update_post_meta($post_id, 'mcu_csv', $mcu_csv[0]);
//access
jj_readcsv($value, true);
由于字符串本质上是字符数组,因此您正在尝试取消序列化字符串的第一个字符的序列化

您需要先取消序列化,然后访问数组元素:


谢谢你的解释,效果很好。仅供参考,数组中将填充更多指向文件的csv URL。@我很高兴能提供帮助。是的,我认为使用数组是有原因的,但添加了后来的代码以防万一。
jj_readcsv(unserialize ($value[0]),true);
//php 5.4+
jj_readcsv(unserialize ($value)[0],true);
//php < 5.4

$unserialized = unserialize ($value);
jj_readcsv($unserialized[0],true);
//save
update_post_meta($post_id, 'mcu_csv', $mcu_csv[0]);
//access
jj_readcsv($value, true);