在coldfusion中反序列化PHP数组

时间:2010-12-22 16:18:56

标签: php wordpress coldfusion

我正在进行Coldfusion项目,我需要从wordpress驱动的数据库中提取一些信息。我需要的一些信息是存储在wp_options表中的序列化数组。我无法弄清楚如何在Coldfusion中反序列化数组数据。

我目前正在使用Coldfusion 8的开发版本。我无法升级到Coldfusion 9,因为我的作品应用程序是基于Coldfusion 8构建的

我只能找到这个关于反序列化CFC的链接http://www.cfinsider.com/index.cfm/2010/5/4/Serializing--Deserializing-in-ColdFusion-9,但它似乎不适用于我传递的数组。

以下是我尝试反序列化的数据示例

a:2:{i:2;a:2:{s:5:"title";s:0:"";s:6:"number";i:5;}s:12:"_multiwidget";i:1;}

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:6)

你最好的选择可能是查看Sean Corfield的scripting for ColdFusion项目。我能用它做到以下几点:

<script:php>
    <?php
        $array = unserialize('a:2:{i:2;a:2:{s:5:"title";s:0:"";s:6:"number";i:5;}s:12:"_multiwidget";i:1;}');
        $_COLDFUSION["test"] = json_encode($array);
    ?>
</script:php>

<cfdump var="#deserializeJSON(variables.test)#">

哪个产生了:

alt text

答案 1 :(得分:4)

如果可以将PHP数组序列化为JSON字符串,则可以在CF端使用deserializeJson。

答案 2 :(得分:3)

嗯,这是PHP序列化的结果 - 我假设CF使用完全不同的过程。架构看起来非常简单:

datatype:size:structure

numbertype:numbervalue

所以

a:2:{i:2;s:3:"foo"}

表示“大小为2的数组{整数2;大小为3的字符串'foo'}”。请注意,数组可以嵌套,而对象和其他序列化类可能会变得复杂(请参阅PHP's manual on serializing objects)。