如何使用 preg_split 按符号拆分字符串?

How to split out string by symbols using preg_split?

我有例如字符串 $s = 'A5C7';$s = 'A5C17';

我尝试使用 preg_split('//', $s, -1, PREG_SPLIT_NO_EMPTY);

按符号拆分字符串

如果字符串 $s = 'A5C7' 我得到的结果是这样的:

array(4) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "5"
  [2]=>
  string(1) "C"
  [3]=>
  string(1) "7"
}

但如果使用 $s = 'A5C17' 我得到了:

array(5) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "5"
  [2]=>
  string(1) "C"
  [3]=>
  string(1) "1"
  [4]=>
  string(1) "7"
}

我想要这样:

 array(4) {
      [0]=>
      string(1) "A"
      [1]=>
      string(1) "5"
      [2]=>
      string(1) "C"
      [3]=>
      string(1) "17"
    }

如何改进 preg_split('//', $s, -1, PREG_SPLIT_NO_EMPTY); 以获得两种类型的结果? 提前致谢。

使用模式 // 将拆分字符。试试这个:

preg_split('/(\d+)/', $s, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

array (
  0 => 'A',
  1 => '5',
  2 => 'C',
  3 => '17',
);

此模式使用连续整数组作为分隔符,它会捕获它们之间的内容。选项 PREG_SPLIT_DELIM_CAPTURE 使它也捕获定界符(整数)。