假设我有一个字符串,如下所示(从MySQL数据库查询):
137 ,77 ,278:214 e{34:3,32:5,33:1},277:248 e{32:5,33:1,34:3}n{Got Dirt?},323 ,443
。
我想在每个给定的,
处爆炸所述字符串,除非所述字符位于{
和}
之间。如果要打印出每一行,正确的输出应该类似于以下内容:
137
77
278:214 e{34:3,32:5,33:1}
277:248 e{32:5,33:1,34:3}n{Got Dirt?}
323
443
我如何才能最有效地完成这项工作?
谢谢!
答案 0 :(得分:3)
您可以使用preg_split
功能以及以下regex
(,)(?!(?:[^\{]*\}))
所以你的代码看起来像
$str = "137 ,77 ,278:214 e{34:3,32:5,33:1},277:248 e{32:5,33:1,34:3}n{Got Dirt?},323 ,443";
$result = preg_split("~(,)(?!(?:[^\{]*\}))~",$str);
print_r($result);
正则表达式说明:
(,)
字面匹配字符,
(?!(?:[^\{]*\}))
否定捕获组未捕获,(commas)
内的{}(curly braces)