基于php中的数字拆分字符串数组?

Adi*_*tya -2 php regex preg-match preg-split

我有一个字符串

 $str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01"
Run Code Online (Sandbox Code Playgroud)

我想用数字拆分这个字符串,例如:"101WE3P-1An ...."应该是第一个元素,"104TUA ......"应该是第二个元素?

有人在我之前的问题preg_match中给写了以下代码,以便连续匹配三个数字的子串?几分钟前:

$result = preg_split('/^\d{3}$/', $page, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
Run Code Online (Sandbox Code Playgroud)

基线是我想匹配三个数字后跟任何大写字母,其次是包括\ t?提前致谢.

sal*_*the 5

您可以preg_split()通过使用前瞻断言来判断在字符串中的任何位置拆分后跟三位数.

$str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01";
$result = preg_split('/(?=\d{3})/', $str, -1, PREG_SPLIT_NO_EMPTY);

var_export($result);
Run Code Online (Sandbox Code Playgroud)

给出以下数组:

array (
  0 => '101WE3P-1An Electrically-Small',
  1 => '104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01',
)
Run Code Online (Sandbox Code Playgroud)

使用该PREG_SPLIT_NO_EMPTY标志是因为字符串的开头也是有三个数字的点,因此这里发生空分割.我们可以改变正则表达式,使其不会在字符串的最开始分割,但这样会使一眼看上去更加困难,而旗帜则非常清晰.