如何通过MySQL表将Python列表转换为PHP数组


How to convert a Python List to a PHP array via a MySQL table

我继承了一个MySQL数据库,表中的一个字段返回了一个曾经是Python列表的字符串,所以我得到了这样的东西:

$test = "[u'Person 1', u'Person 2']";

什么是最干净/最简单/最好/最简单的(我不知道如何表达),可以在PHP中将这些数据返回到数组中?我正在使用PHP4,但如果需要,我可以升级到PHP5.4。

我没有太多的PHP编程经验,我的第一个想法是做这样的事情:

$new = explode(",",$test);

这种方法很有效,但之后需要清理(例如,数组的每个元素前面至少有u'),如果任何元素包含逗号,它显然是脆弱的。

有没有更干净/更容易/更好/更简单的方法?

您最好的选择是编写一个Python脚本,用JSON更新mysql数据存储,几乎所有语言都可以轻松地对其进行解析。(如@Hugo Dozois所述)

就我个人而言,我不会尝试用PHP来阅读这篇文章。您展示的示例在一个平面列表中有2个unicode字符串。。。但随着时间的推移,你可能会遇到更多的问题和边缘情况。你可能有一些unicode字符串,其他字节字符串,一些数字。。。甚至可能是嵌套的列表或dict。

如果你没有继承它,并且100%确定发生了什么——那么当然,你可以解析东西。但是,编写和运行一个Python脚本应该不到5分钟,该脚本可以将其转换为JSON并解决所有问题。

您可以使用preg_match_all并执行以下操作:

$test = "[u'Person 1', u'Person 2']";
preg_match_all('/u''(.*?)''/', $test, $matches);
var_dump($matches);
/*
array(2) { 
[0]=> array(2) { 
    [0]=> string(11) "u'Person 1'" 
    [1]=> string(11) "u'Person 2'" } 
[1]=> array(2) { 
    [0]=> string(8) "Person 1" 
    [1]=> string(8) "Person 2" 
    } 
} 
*/