добавить одно значение буквенно-цифровой

Я реализовал функциональность получить буквенно-цифровое значение и плюс одно значение.

$string = "VDLE009567";
$person = $numbers = array();

if(preg_match_all('/([a-z ]+[0-9]+)/i', $string, $mt)) {
$nrmt = count($mt[0]);
for($i=0; $i<$nrmt; $i++) {
if(preg_match('/([a-z ]+)([0-9]+)/i', $mt[0][$i], $mt2)) {
echo $person[$i] = trim($mt2[1]);
echo $numbers[$i] = $mt2[2];
}
}
}
echo $numbers=$numbers[0]+1;

мне нужно получить значения как «VDLE009568», но я получил значения как «VDLE9568». Есть ли какой-нибудь возможный способ получить этот «VDLE009568»

0

Решение

Используйте этот код для результата

<?php
$string = "VDLE999999";
$person = $numbers = array();

if (preg_match_all('/([a-z ]+[0-9]+)/i', $string, $mt)) {
$nrmt = count($mt[0]);
for ($i = 0; $i < $nrmt; $i++) {
if (preg_match('/([a-z ]+)([0-9]+)/i', $mt[0][$i], $mt2)) {
$personout   = $person[$i] = trim($mt2[1]);
$numbers[$i] = $mt2[2];
if ($numbers[0] == 999999) {
$last      = substr($personout, -1, 1);
$personout = substr($personout, 0, -1) . (++$last);
$numbers[0] = 0;
}
echo $personout;
}
}
}
echo $numbers = str_pad($numbers[0] + 1, 6, '0', STR_PAD_LEFT);

Для результата: VDLF000001 Онлайн тест Нажмите здесь

-1

Другие решения

для вашего необходимого условия я сделал некоторые изменения в коде

<?php

$string = "VDLE999999";
$person = $numbers = array();
if(preg_match_all('/([a-z ]+[0-9]+)/i', $string, $mt)) {
$nrmt = count($mt[0]);
for($i=0; $i<$nrmt; $i++) {
if(preg_match('/([a-z ]+)([0-9]+)/i', $mt[0][$i], $mt2)) {
$person[$i] = trim($mt2[1]);
$numbers[$i] = $mt2[2];
}
}
}
$num = (string)$numbers[0];
$word_length = strlen($num);
$max = 9;
$max_str = '';
for($i=0;$i<$word_length;$i++){
$max_str .=$max;
}
$max_str = (int)$max_str;
if($num < $max_str){
echo $numbers=str_pad($num+1, $word_length, '0', STR_PAD_LEFT);
}else{
$numbers=str_pad($num+1,$word_length+1, '0', STR_PAD_LEFT);
$new_str = strrev((string)$numbers);
$new_num = (int)$new_str;
echo $numbers = str_pad($new_num,$word_length+1, '0', STR_PAD_LEFT);
}
0

По вопросам рекламы [email protected]