繁体   English   中英

如何在PHP中反序列化Ruby序列化的YAML数据?

[英]How can I deserialize Ruby-serialized YAML data in PHP?

我是PHP的新手,我想在PHP中反序列化Ruby序列化的YAML数据。

哈希有人做到了吗?

Ruby代码:

class CustomField < ActiveRecord::Base
   serialize :possible_values
end

在Rails中,我使用以下代码从MySQL数据库检索数据:

  cf = CustomField.find(1).possible_values.to_s

我可以检索结果:

  [\"文字\", \"スタイル\", \"入力チェック\"]

在cakephp中,检索到的结果是:

--- 
- !binary |
  5paH5a2X

- !binary |
  44K544K/44Kk44Or

- !binary |
   5YWl5Yqb44OB44Kn44OD44Kv

非常感谢大家。

我自己解决了。 在Rails中,如果您定义如下的serialize属性

class CustomField < ActiveRecord::Base
  serialize :possible_values
end

Rails会将序列化的yaml和base64_encoded数据保存到DB中。

因此,在php中

首先,我解析了从db检索的yaml数据。

$base64_encoded_possible_values = yaml_parse($result[0]["CustomField"]["possible_values"]);
/*
  array
  0 => 5paH5a2X,
  1 => 44K544K/44Kk44Or
  ...
*/

在使用yaml_parse方法之前,必须安装yaml php extension

就我而言,我下载了php_yaml.dll并将其放入C:\\ xampp \\ php \\ ext,然后将以下行添加到C:\\ xampp \\ php \\ php.ini中。

extension=php_yaml.dll

第二,解码该值。

base64_decode($base64_encoded_possible_values[0]);//文字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM