用两个分隔符分解字符串


Exploding a String with Two Delimiters

首先,我已经看到了以下问题:

  • Php-用两个分隔符分解字符串
  • 将分隔字符串数组分解为两个数组
  • PHP使用2个不同的分隔符进行分解/拆分

还有更多。如果我有这样的输入:

A@B#C
a@b#c

对于每一行,我都有两个分隔符@#,我希望以这种方式将它们分隔为一个数组:

Array
(
    [0] => A
    [1] => B
    [2] => C
)
Array
(
    [0] => a
    [1] => b
    [2] => c
)

我的循环代码是这样的:

foreach (explode(PHP_EOL, $input) as $line) {
    $line = explode("@", $line);
    $line[1] = explode("#", $line[1]);
}

我知道我所做的是错误的。我得到的输出是:

Array
(
    [0] => A
    [1] => Array
        (
            [0] => B
            [1] => C
        )
)
Array
(
    [0] => a
    [1] => Array
        (
            [0] => b
            [1] => c
        )
)

我没有其他想法,所以,有人能指导我如何在同一数组中拆分字符串吗?ps:我不想使用regex!

我的首选解决方案是使用preg_split,但既然问题明确禁止使用regex,那么就这样做吧:

$line = explode("#", str_replace("@", "#", $line));

因此,基本上,只需将所有出现的分隔符1替换为分隔符2,然后在分隔符2上拆分即可。