我是PHP的新手,我想在PHP中反序列化Ruby序列化的YAML数据。
Hash任何人都这样做了吗?
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
答案 0 :(得分:0)
非常感谢大家。
我自己解决了。 在rails中,如果您定义如下所示的序列化属性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]);//文字