将字符串拆分为带有模式的数组

时间:2012-06-01 21:27:50

标签: php flex

我从flex发送一个数组到我的PHP脚本。 要拆分的字符串就像[F1,3,true] [Urg,4,false] 我将使用这些信息将记录更新到mySql数据库。

例如[F1,3,true]是这样的记录[Name,Id,Visible]。

但我不知道如何拆分使用信息。

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

如果您真的坚持这种格式,可以试试preg_match。

$string = '[F1, 3, true][Urg, 4, false][asd,      1337, TrUe]';
preg_match_all('/\[(\w+),\s*?(\d+),\s*?(true|false)\]/i', $string, $matches, PREG_SET_ORDER);

通过这个你将获得一个二维数组,数组中的每个元素都是一个数组。每个数组中的第一个元素是匹配数据行,以下元素是解析数据。 元素可以根据需要分隔尽可能多的空白字符,布尔值的大小写无关紧要。

答案 1 :(得分:0)

您可以删除括号:

$txt = substr($txt, 1, -1);

爆炸:

$array = explode(',', $txt)

答案 2 :(得分:0)

我希望您的数据字符串中没有逗号或方括号 - 这可能会使这变得不可能!但假设没有这些:

preg_match_all('/\[([^\]]*)\]/', $text, $matches);
return array_map(function($match) {
    return array_map('trim', explode(',', $match));
}, $matches[1]);

(它使用了一个只在PHP 5.3及更高版本中支持的闭包;如果您使用的是旧版本,则可以很容易地将其更改为foreach循环。)