在逗号处分割字符串,但忽略嵌在括号内的逗号字符。

3
我目前正在担任PHP开发人员,现在有一个任务是使用一些旧的PHP遗留代码来过滤某些汽车细节,然后再将其添加到数据库中。 我目前卡在如何跳过括号内的型号分割上。
例如:
"v70, 790, v50 (v40, v44), v22"

期望输出结果:

[ "v70", "790", "v50 (v40, v44)", "v22" ]

为了让括号内的逗号被split函数忽略,你可以在括号外面加一层括号。 非常感谢任何帮助和指导!

<?php echo json_encode(array_map('trim', preg_split("/,(?![^(]*\))/", 'v70, 790, v50 (v40, v44), v22'))); - spinsch
重新打开:相关帖子是JavaScript,而不是PHP。 - Gerard de Visser
逐个解析字符串字符。当您遇到“,”时,返回当前标记。当您遇到“(”时,请吃掉字符,直到遇到“)”。 - user229044
1个回答

2
您可以使用preg_split()方法来实现此功能(文档)。您可以使用它来基于正则表达式模式拆分字符串,以逗号分隔的值,但如果这些值在括号之间,则被忽略。
这段代码适用于您的示例:
<?php

$string = 'v70, 790, v50 (v40, v44), v22';
$pattern = '/,(?![^(]*\)) /';
$splitString = preg_split($pattern, $string);
< p > $splitString 的输出如下:

array (size=4)
  0 => string 'v70' (length=3)
  1 => string '790' (length=3)
  2 => string 'v50 (v40, v44)' (length=14)
  3 => string 'v22' (length=3)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接