在php中根据数字分割字符串数组



我有一个字符串

 $str = "101WE3P-1An Electrically-Small104TU5A-3,Signal-Interference Duplexers Gomez-GarciaRobertoTU5A-3-01"

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

有人给我写了下面的代码在我之前的问题preg_match匹配连续三个数字的子字符串? some little minutes ago:

$result = preg_split('/^d{3}$/', $page, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

基线是我想匹配三个数字,后面跟着任何一个大写字母,后面跟着任何东西,包括t ?

您可以使用前瞻性断言告诉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);

给出如下数组:

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

使用PREG_SPLIT_NO_EMPTY标志是因为字符串的最开始也是有三位数字的点,所以这里发生空分割。我们可以修改正则表达式,使其在字符串的最开始不分割,但这将使它更难以一眼理解,而标志是非常清楚的。

我尝试匹配而不是分割

preg_match_all('/^(d{3}.*?)*$/', $str, $matches);
var_dump($matches);

似乎得到正确的结果为您的样本

相关内容

  • 没有找到相关文章

最新更新