- print_r: documentation ( source)
- str_pad: documentation ( source)
- preg_replace_callback_array: documentation ( source)
<?php
$versions = [ '1', '1.0.2.4', '1.1.0', '1.12.547.8' ];
$max = 0;
$new = preg_replace_callback_array(
[
"/(\d+).?/" => function($m)use(&$max){
if(($new = strlen($m[1])) > $max)
$max = $new;
return $m[0];
},
"/(\d+)$|(\d+.)/" => function($m)use(&$max){
return str_pad($m[0], ($m[1] !== "" ? $max : $max+1), "0", STR_PAD_LEFT);
}
], $versions);
print_r($new);