gpt4 book ai didi

php - preg_split 以逗号分隔,忽略括号,PHP

转载 作者:行者123 更新时间:2023-12-01 22:44:28 26 4
gpt4 key购买 nike

我必须拆分一个字符串,我想避免在括号内用逗号拆分它。那么我该如何实现呢?

例子:

$string = "string1 (sString1, sString2,(ssString1, ssString2)), string2, string3";

result should be:

array(
[0] => string1 (sString1, sString2,(ssString1, ssString2))
[1] => string2
[2] => string3
)

最佳答案

尝试使用正则表达式执行此操作时,您将陷入一团糟。遍历字符串的字符并进行这种检查非常简单。像下面这样的东西应该可以工作:

<?php

function specialsplit($string) {
$level = 0; // number of nested sets of brackets
$ret = array(''); // array to return
$cur = 0; // current index in the array to return, for convenience

for ($i = 0; $i < strlen($string); $i++) {
switch ($string[$i]) {
case '(':
$level++;
$ret[$cur] .= '(';
break;
case ')':
$level--;
$ret[$cur] .= ')';
break;
case ',':
if ($level == 0) {
$cur++;
$ret[$cur] = '';
break;
}
// else fallthrough
default:
$ret[$cur] .= $string[$i];
}
}

return $ret;
}

var_export(specialsplit("string1 (sString1, sString2,(ssString1, ssString2)), string2, string3"));

/*array (
0 => 'string1 (sString1, sString2,(ssString1, ssString2))',
1 => ' string2',
2 => ' string3',
)*/

请注意,如果您要拆分的字符串不止一个字符,则此技术很难实现。

关于php - preg_split 以逗号分隔,忽略括号,PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4538086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com