Поскольку ваша первая часть зависит от общего количества символов, этот код сначала разделяет нечетный бит с начала, а затем использует str_split()
с остатком, чтобы разделить его на 3 символьных сегмента ...
function insertDocs($str) {
$start = substr($str, 0, strlen($str) % 3);
$end = str_split(substr($str, strlen($start)), 3);
array_unshift($end, $start);
return implode(".", $end);
}
То есть
echo insertDocs("12345678");
дает ...
12.345.678
Чтобы исправить исходный код, вы можете изменить строку preg_split()
на
$str1 = str_split($str, 3);
и убедитесь, что вы возвращаете $str1
из функции, а не $str
.