首页 > 解决方案 > 以逗号字符拆分字符串,但如果所述字符嵌套在括号内,则忽略

问题描述

我目前是一名 php 开发人员,现在分配了一些旧的 php 遗留代码,这些代码旨在在将某些汽车详细信息添加到数据库之前对其进行过滤。我目前坚持的是我应该如何跳过括号内的模型

例子:

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

预期输出:

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

这样,括号的内部就被拆分忽略了。非常感谢任何帮助和指示!

标签: phpregexstringsplit

解决方案


您可以preg_split()为此使用方法(文档)。您可以使用它根据逗号分隔值的正则表达式模式拆分字符串,但如果这些值在括号之间,则忽略。

此代码适用于您的示例:

<?php

$string = 'v70, 790, v50 (v40, v44), v22';
$pattern = '/,(?![^(]*\)) /';
$splitString = preg_split($pattern, $string);

输出$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)

推荐阅读