PHP 将字符串转换为具有可变元素长度的数组


PHP convert string to array with variable element length

我有一个字符串AB0512CD123456并使用preg match如何将其转换为

Array[0]='AB';
Array[1]='05';
Array[2]='12CD12';
Array[3]='3456';

这是第一个大小为 2 的元素,然后是 2、6、4 等。输入字符串可能是动态的。

如果输入字符串长度是固定的,您只需要sscanf()

var_dump(sscanf('AB0512CD123456', '%2s%2s%6s%4s'));

输出:

array(4) {
  [0]=>
  string(2) "AB"
  [1]=>
  string(2) "05"
  [2]=>
  string(6) "12CD12"
  [3]=>
  string(4) "3456"
}

最好使用这个:

    $str="AB0512CD123456";
$Array[0] = substr($str, 0,2);
$Array[1] = substr($str, 2,2);
$Array[2] = substr($str, 4,6);
$Array[3] = substr($str, 10,4);

适用于任何广义模式

此示例利用了 Paulo Freitas 提出的sscanf

<?php
$str="AB0512CD123456";
$pattern="2,3,4,5"; // Your pattern
$pattern=explode(",",$pattern);
foreach($pattern as $k=>$v)
{
$newpattern.="%".$v."s";
}
var_dump(sscanf($str,$newpattern));