我正在努力寻找增加所需特定模式的方法。对于每个新成员,他们会获得一个唯一的ID,例如 ABC000001 。每个新成员ID应增加1。所以第二个成员的ID将是 ABC000002 。我正在使用PHP和MySQL来跟踪每个成员,但我还没有想出一种方法来使用上面的字符串格式正确增加。
最好的方法是什么?
答案 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;
这适用于此实例,但如果前缀中包含数字,则无效。