2010-12-22 5 views
4

Je travaille sur un projet Coldfusion où je dois extraire des informations d'une base de données alimentée par wordpress. Certaines des informations dont j'ai besoin sont dans un tableau sérialisé stocké dans la table wp_options. Je ne peux pas comprendre comment désérialiser les données de tableau dans Coldfusion.Désérialise le tableau PHP en coldfusion

J'utilise actuellement la version dev de Coldfusion 8. Je ne peux pas mettre à niveau vers Coldfusion 9 depuis mon application fonctionne est construit sur Coldfusion 8

Je n'ai pu trouver ce lien http://www.cfinsider.com/index.cfm/2010/5/4/Serializing--Deserializing-in-ColdFusion-9 qui parle à propos de la désertification des CFC, mais cela ne semble pas fonctionner sur le tableau que je passe.

Voici un exemple des données que je suis en train de deserialze

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

Toute aide serait grande.

Répondre

4

Si vous pouvez sérialiser le tableau PHP dans une chaîne JSON, vous pouvez utiliser deserializeJson du côté CF.

+1

Je suivrai ce chemin si possible. – Christian

+1

convenu - PHP peut exporter JSON, et pratiquement tous les autres langages peuvent l'importer. C'est définitivement le format préféré. – Spudley

+0

Merci, C'était une solution simple que j'ai complètement regardé. J'ai été capable d'écrire un plugin rapide qui stocke une copie des données du widget dans JSON. – iangraham

3

Eh bien, c'est le résultat de la sérialisation PHP - je suppose que CF utilise un processus complètement différent. Le schéma semble assez simple:

datatype:size:structure 

ou

numbertype:numbervalue 

si

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

signifierait "tableau de taille 2 {entier 2, chaîne 'foo' de taille 3}". Notez que les tableaux peuvent être imbriqués et que les choses peuvent se compliquer avec les objets et autres classes sérialisées (voir PHP's manual on serializing objects).

6

Votre meilleur pari pourrait être de vérifier le projet scripting for ColdFusion de Sean Corfield. J'ai pu faire ce qui suit avec elle:

<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)#"> 

qui a produit:

alt text

+0

vous pouvez aller un peu plus loin et définir la chaîne dans CF et le retirer sur le côté php comme suit: $ array = unserialize ($ _ COLDFUSION ["serializedString"]); –