O.K。所以我非常聪明 - 我已经创建了一个库来保存一堆WP主题,这些主题都是根据我的需要设置的,所以当我推出一个新网站时,我可以在几分钟内创建新的博客。
作为新域的持有者,sql文件中包含旧域的所有内容都替换为[token]。
一切都工作正常,直到我创建一个带有子主题的地方,显然在将数据输入数据库之前将其序列化。最终得到这样的东西:
Theme','a:8:{s:12:\"header_image\";s:92:\"http://[token]wp-content/uploads/2011/05/494-Caring-for-fruit-trees-PLR.jpg\";s:16:\"background_image
所以我深入研究了序列化,结果证明s:92位是例如该值中的字符数。由于我正在改变[令牌],它会改变并中断。
到目前为止,我对sql文件进行了所有更改,除了用sql文件填充数据库之外没有编辑数据库 - 但我对如何处理串行数组中的数据感到茫然
有什么想法吗?
答案 0 :(得分:1)
最简单的方法是获取数据并使用unserialize()
函数,例如
$arr = unserialize($data);
然后以那种方式编辑数据。完成后,使用serialize()
重新序列化,并将其存储回来。您可能必须对未序列化的数据执行print_r()
,以查看它是如何存储的,以查看您需要编辑的内容。
如果直接从序列化数据进行更改,则必须获取当前子字符串的长度,进行更改,然后获取新长度并将其拼接回序列化数据,这样会更复杂比它需要的那样。