<?php
function split_columns ($string, $indices) {
$pat = "";
foreach ($indices as $key => $id) {
if ($key==0) {
$pat .= "(.{" . $id . "})";
} else if ($key<count($indices)) { $pat .= "(.{" . ($id-$indices[$key-1]) . "})";
}
}
$pats = '~^'.$pat.'(.*)$~m';
}
$string = "11234567891234567\n11234567891234567"; // 1: '1', 2: '123456789', 3: '1234', 4: '567'
print_r (split_columns
($string, $positions=array(1, 10, 14)));
PD9waHAKCmZ1bmN0aW9uIHNwbGl0X2NvbHVtbnMgKCRzdHJpbmcsICRpbmRpY2VzKSB7CgkkcGF0ID0gICIiOwoJZm9yZWFjaCAoJGluZGljZXMgYXMgJGtleSA9PiAkaWQpIHsKCQlpZiAoJGtleT09MCkgeyAKCQkJJHBhdCAuPSAiKC57IiAuICRpZCAuICJ9KSI7CgkJfSBlbHNlIGlmICgka2V5PGNvdW50KCRpbmRpY2VzKSkgewoJCQkkcGF0IC49ICIoLnsiIC4gKCRpZC0kaW5kaWNlc1ska2V5LTFdKSAuICJ9KSI7CgkJfQoJfQoJJHBhdHMgPSAnfl4nLiRwYXQuJyguKikkfm0nOwoJcHJlZ19tYXRjaF9hbGwoJHBhdHMsICRzdHJpbmcsICRhcnIpOwoJcmV0dXJuIGFycmF5X3NsaWNlKCRhcnIsIDEpOwp9CiRzdHJpbmcgPSAiMTEyMzQ1Njc4OTEyMzQ1NjdcbjExMjM0NTY3ODkxMjM0NTY3IjsgLy8gMTogJzEnLCAyOiAnMTIzNDU2Nzg5JywgMzogJzEyMzQnLCA0OiAnNTY3JwpwcmludF9yIChzcGxpdF9jb2x1bW5zKCRzdHJpbmcsICRwb3NpdGlvbnM9YXJyYXkoMSwgMTAsIDE0KSkpOw==