首页 > 解决方案 > 如何从字符串中添加数字

问题描述

我想从我的字符串中添加数字。这是我的字符串

$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;
    }
}

标签: phpregex

解决方案


您可以使用 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);

推荐阅读