【问题标题】:Split a string at comma character but ignore if said character is nested inside parentheses以逗号字符拆分字符串,但如果所述字符嵌套在括号内,则忽略
【发布时间】:2021-10-19 07:56:30
【问题描述】:

我目前是一名 php 开发人员,现在有一些旧 php 遗留代码的任务,这些代码旨在过滤某些汽车详细信息,然后再将其添加到数据库中。 我目前坚持的是我应该如何跳过括号内的模型

例子:

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

预期输出:

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

因此括号内的, 被拆分忽略。 非常感谢任何帮助和指点!

【问题讨论】:

  • <?php echo json_encode(array_map('trim', preg_split("/,(?![^(]*\))/", 'v70, 790, v50 (v40, v44), v22')));
  • 重新打开:相关帖子是 javascript,而不是 php。
  • 逐个字符解析字符串。当您遇到, 时,返回当前令牌。当你遇到(时,吃掉字符直到遇到)

标签: php regex string split


【解决方案1】:

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

此代码适用于您的示例:

<?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)

【讨论】:

    猜你喜欢
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2020-05-23
    • 1970-01-01
    相关资源
    最近更新 更多