PHP取消序列化序列化数据
我对序列化数据的非序列化有问题 数据被序列化并保存在数据库中 此数据包含一个上载的.csv url,我想将其返回给fgetcsv fgetcsv需要一个数组,现在给出了一个字符串,所以我需要取消序列化数据,但这会给我带来错误 我在网上找到了这个,但似乎不起作用。所以我希望有人能告诉我哪里出了问题: 以下是错误: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
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);