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


Split string into array with pattern

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

例如 [F1, 3, true] 就是这样的记录 [名称, Id, 可见]。

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

感谢您的帮助

您可以删除括号:

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

并爆炸:

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

如果你真的坚持这种格式,你可以尝试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);

有了这个,您将获得一个二维数组,数组中的每个元素都是一个数组。每个数组中的第一个元素是匹配数据行,以下元素是解析的数据。元素可以由任意数量的空格字符分隔,布尔值的大小写无关紧要。

我希望

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

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

(这使用闭包,仅在 PHP 5.3 及更高版本中支持;如果您使用的是旧版本,则可以轻松地将其更改为 foreach 循环。