在PHP

时间:2018-04-10 15:35:30

标签: php mysql

我正在努力寻找增加所需特定模式的方法。对于每个新成员,他们会获得一个唯一的ID,例如 ABC000001 。每个新成员ID应增加1。所以第二个成员的ID将是 ABC000002 。我正在使用PHP和MySQL来跟踪每个成员,但我还没有想出一种方法来使用上面的字符串格式正确增加。

最好的方法是什么?

3 个答案:

答案 0 :(得分:4)

正如@axiac所提到的,这可能不是一个好主意,但它很容易管理。

$memberid = 'ABC000001';
list($mem_prefix,$mem_num) = sscanf($memberid,"%[A-Za-z]%[0-9]");
echo $mem_prefix . str_pad($mem_num + 1,6,'0',STR_PAD_LEFT);

将您当前的会员编号拆分为字母和数字部分,然后将它们重新组合在一起,以便在执行此操作时将其编号。我将它用作函数并传递先前的ID,我得到的是序列中的下一个ID。

答案 1 :(得分:1)

您只能使用正则表达式提取数字以递增并使用str_pad创建前缀:

$memberid = 'ABC000001';
$num = preg_replace('/\D/', '',$memberid);
echo sprintf('ABC%s', str_pad($num + 1, "6", "0", STR_PAD_LEFT));

答案 2 :(得分:0)

没有正则表达式的可能答案。 遍历每个字符并检查它是否为数字。 然后使用sprintf()确保前导0仍在那里。

$str = "ABC000001";
$number = "";
$prefix = "";
$strArray = str_split($str);
foreach ($strArray as $char) {  
    if (is_numeric($char))  {
        $number .= $char;   
    } else {
        $prefix .= $char;   
    }
}
$length = strlen($number);

$number = sprintf('%0' . $length . 'd', $number + 1);
echo $prefix . $number;

这适用于此实例,但如果前缀中包含数字,则无效。