Как добавить номер из строки - PullRequest
0 голосов
/ 15 января 2019

Я хочу добавить номер из моей строки. это моя строка

$formula = 'IF(B15="","",IF(ISNUMBER(A14),A14+1,IF(ISNUMBER(B3),B3+1,1)))';

Я хочу добавить номер, если перед номером стоит алфавит. например, я хочу сделать B15-B16 ini моей строкой .. это мой цикл

$jum = strlen($formula);
for($i = 0; $i < $jum; $i++){
    if(ctype_alpha($formula[$i]) && ctype_alnum($formula[$i+1])){
        $temp_formula[$i+1] += 1;
    }
}

1 Ответ

0 голосов
/ 15 января 2019

Вы можете сделать это с помощью preg_replace_callback. Используйте это регулярное выражение, которое ищет символ вида <letter><digits> между границами слова:

\b([A-Z])(\d+)\b

и затем при обратном вызове значение второй группы может быть увеличено:

$formula = 'IF(B15="","",IF(ISNUMBER(A14),A14+1,IF(ISNUMBER(B3),B3+1,1)))';
echo preg_replace_callback('/\b([A-Z])(\d+)\b/', function ($m) {
    return $m[1] . (1 + $m[2]);
}, $formula);

Выход:

IF(B16="","",IF(ISNUMBER(A15),A15+1,IF(ISNUMBER(B4),B4+1,1)))

Демонстрация на 3v4l.org

Обновление

Чтобы использовать внешнюю переменную в обратном вызове (как описано в комментариях), отредактируйте код следующим образом:

$formula = 'IF(B15="","",IF(ISNUMBER(A14),A14+1,IF(ISNUMBER(B3),B3+1,1)))';
$tambah = $adding + ($rekord*$highest);
echo preg_replace_callback('/\b([A-Z])(\d+)\b/', function ($m) use ($tambah) {
    return $m[1] . ($tambah + $m[2]); 
}, $formula);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...