0

有没有办法像这样快速转换简单的枚举数据格式

枚举('一','二','三')

到json?

我写了一段代码:

        $res = $rst->fetch_assoc();
        $type = $res['DATA_TYPE'];
        $json = preg_replace('/\'/','"', $res['COLUMN_TYPE']);
        $json = preg_replace("/^$type\(/",'[', $json);
        $json = preg_replace('/\)/',']', $json);
        return json_decode($json);

但这里原始字符串的每个部分都有 3 个替代项:单引号、'enum(' 和 ')'。我已经阅读了很多关于转换枚举的正则表达式,但无法弄清楚如何一步到位。

4

2 回答 2

0

用这个替换你的代码,它应该有想要的结果

$res = $rst->fetch_assoc();
$type = $res['DATA_TYPE'];
preg_match_all('/\'([^\']*)\'/',$res['COLUMN_TYPE'],$matches);
return $matches[1];

你说你想要json,但你实际上在最后使用json_decode()返回一个数组,preg_match_all已经给你一个数组,所以不需要解码,如果你真的想要json,你可以使用json_encode($matches[1])

于 2013-08-06T14:28:28.107 回答
0

这应该适合你。

<?php
$str = "enum('one','two','three')";
$start = strpos($str, "(")+1;
$str = substr($str, $start, strrpos($str,")") - $start);
$parts = explode(",", $str);
$enum = array_map(function($a){
        return trim($a, "'");
    },$parts);
return json_encode($enum);
于 2013-08-06T14:39:34.590 回答