使用数组作为条件的substr


substr by using array as condition

我有一个包含文本的文件

ABBCDE1990-12-10JOBALPHABETabbcde1990-12-10jobalphabet

$field = array(
   "fullname" => array("length"=5,"mandat"=>True),
   "bithday" => array("length"=>10,"mandat"=>True)
   "job" => array("length"=>3,"mandat"=>True),
   "desc" => array("length"=>8,"mandat"=>false)      
);

我怎样才能得到数组像这样的东西:

$output = array(
    //ABBCDE1990-12-10JOBALPHABET
      0=>array(   
            "fullname" => "ABBCDE"
            "bithday" => 1990-12-10
            "job" =>  "JOB"
            "desc"=>  "ALPHABET"
        )
     //abbcde1990-12-10jobalphabet
       1=>array(   
            "fullname" => "abbcde"
            "bithday" => 1990-12-10
            "job" =>  "job"
            "desc"=>  "alphabet"
        )
    );

我正在尝试构建一个功能

function toOutput($str,$filed){
  $per_line = 27;//len of abbcde1990-12-10jobalphabet
  $pos = 0;
  while ($pos<strlen($str)){
    $pos +=  27;
    //
  }

}
$field = array(
   "fullname" => array("length"=>6,"mandat"=>True),
   "bithday" => array("length"=>10,"mandat"=>True),
   "job" => array("length"=>3,"mandat"=>True),
   "desc" => array("length"=>8,"mandat"=>false)      
);
$string = 'ABBCDE1990-12-10JOBALPHABETabbcde1990-12-10jobalphabet';
$result = array();
$countString = strlen($string)/27;
$oldPos = 0;
for($i=0;$i<$countString;$i++) {
  foreach($field as $k=>$v) {
    $result[$i][$k] = substr($string,$oldPos,$v['length']);
    $oldPos += $v['length'];
  }
}
print_r($result);

你可以在这里看到它的启动和运行:http://codepad.org/CEQNIPCg(版本0.3)

在此基础上,您可以创建一个函数,以便将的所有$string传递给它