2010-12-22 8 views
4

Ich arbeite an einem Coldfusion-Projekt, bei dem ich einige Informationen aus einer wordpress-basierten Datenbank abrufen muss. Einige der Informationen, die ich brauche, befinden sich in einem serialisierten Array, das in der Tabelle wp_options gespeichert ist. Ich kann nicht herausfinden, wie die Array-Daten in Coldfusion deserialisiert werden.PHP-Array in Coldfusion deserialisieren

ich zur Zeit mit der Entwickler-Version von Coldfusion 8 Ich kann nicht auf Coldfusion 9 aktualisieren, da meine Werke Anwendung Coldfusion 8 auf bauen

Ich habe nur in der Lage gewesen, diesen Link http://www.cfinsider.com/index.cfm/2010/5/4/Serializing--Deserializing-in-ColdFusion-9 zu finden, die im Gespräch über das Deserialisieren von CFC's, aber es scheint nicht zu funktionieren an dem Array, das ich passiere. Hier

ist ein Beispiel für die Daten Ich versuche

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

Jede Hilfe zu deserialze wäre toll.

Antwort

4

Wenn Sie das PHP-Array in eine JSON-Zeichenfolge serialisieren können, können Sie deserializeJson auf der CF-Seite verwenden.

+1

Ich würde diesen Weg folgen, wenn möglich. – Christian

+1

vereinbart - PHP kann JSON exportieren, und praktisch jede andere Sprache kann es importieren. Das ist definitiv das bevorzugte Format. – Spudley

+0

Danke, das war eine einfache Lösung, die ich komplett überblickte. Ich konnte ein schnelles Plugin schreiben, das eine Kopie der Widget-Daten in JSON speichert. – iangraham

3

Nun, das ist ein Ergebnis der PHP-Serialisierung - ich nehme an, CF verwendet einen völlig anderen Prozess. Das Schema scheint ziemlich einfach:

datatype:size:structure 

oder

numbertype:numbervalue 

so

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

"Array der Größe 2 {integer 2; string 'foo' der Größe 3}" bedeuten würde. Beachten Sie, dass Arrays geschachtelt werden können und Dinge mit Objekten und anderen serialisierten Klassen kompliziert werden können (siehe PHP's manual on serializing objects).

6

Ihre beste Wette ist vielleicht Sean Corfield's scripting for ColdFusion Projekt zu überprüfen. Ich konnte die folgende damit tun:

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

Welche produziert:

alt text

+0

könnte man noch einen Schritt weiter gehen und die Zeichenkette in CF setzen und wie folgt auf der php-Seite herausziehen: $ array = unserialize ($ _ COLDFUSION ["serializedString"]); –