Десериализовать массив PHP в Coldfusion - PullRequest
4 голосов
/ 22 декабря 2010

Я работаю над проектом Coldfusion, где мне нужно извлечь некоторую информацию из базы данных на основе WordPress.Некоторая информация, которая мне нужна, находится в сериализованном массиве, который хранится в таблице wp_options.Я не могу понять, как десериализовать данные массива в Coldfusion.

В настоящее время я использую версию Coldfusion 8. Я не могу перейти на Coldfusion 9, так как мое рабочее приложение построено на Coldfusion 8.

Мне удалось найти только эту ссылку http://www.cfinsider.com/index.cfm/2010/5/4/Serializing--Deserializing-in-ColdFusion-9, в которой говорится о десериализации CFC, но, похоже, она не работает с массивом, который я передаю.

Здесьэто пример данных, которые я пытаюсь десериализировать

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

Любая помощь будет отличной.

Ответы [ 3 ]

6 голосов
/ 22 декабря 2010

Лучше всего было бы проверить сценарий Шона Корфилда для проекта 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

4 голосов
/ 22 декабря 2010

Если вы можете сериализовать массив PHP в строку JSON, вы можете использовать deserializeJson на стороне CF.

3 голосов
/ 22 декабря 2010

Ну, это результат сериализации PHP - я предполагаю, что CF использует совершенно другой процесс.Схема кажется довольно простой:

datatype:size:structure

или

numbertype:numbervalue

, поэтому

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

будет означать "массив размера 2 {целое число 2; строка 'foo"размером 3} ".Обратите внимание, что массивы могут быть вложенными, а вещи могут усложниться с объектами и другими сериализованными классами (см. Руководство PHP по сериализации объектов ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...