簡體   English   中英

PHP增量字母數字字符串

[英]PHP Increment alphanumeric string

我在一個頁面上工作,用戶將使用帶有一組數據的數據表查看表格。 他們需要選擇自己的編號,可以只是數字或字母數字和增量。

因此,這將有兩個輸入一個起始編號,可能是他們想喜歡什么: 1A0101A01M和這樣的例子不勝枚舉。 所以組合可能是無止境的。

然后列表繼續,現在棘手的是增量。 用戶需要選擇將增量設置為任何數字,因為它可能在末尾有不應更改的字符, $n++增加字母數字字符串在這里不起作用。

我一直在谷歌搜索,但我發現的唯一的是特定情況或使用++進行自動增量。

任何幫助都會很棒。

如果您不區分大小寫,則可以使用base_convert($string, 36,10) 這會將字符串轉換為int(將字符串視為基數36中的數字)。

$var = base_convert('azz',36,10);
echo base_convert($var,10,36).PHP_EOL; $var+=1;
echo base_convert($var,10,36).PHP_EOL; $var+=1;
echo base_convert($var,10,36).PHP_EOL;

會給你 :

azz
b00
b01

但請注意,6個字符已經為您提供36 ^ 6-1~2億個可能性,這是一個簡單的整數的價值!

在PHP中,您可以使用preg_replace_callback()

function increment($string)
{
   return preg_replace_callback('/^([^0-9]*)([0-9]+)([^0-9]*)$/', function($m)
   {
      return $m[1].str_pad($m[2]+1, strlen($m[2]), '0', STR_PAD_LEFT).$m[3];
   }, $string);
}

str_pad()是必需的,因為我們可能有前導零,如果談到字符串,這是很重要的。 一些例子:

var_dump(increment('2000000000'));//string(10) "2000000001"
var_dump(increment('A040'));      //string(4) "A041"
var_dump(increment('A15MM'));     //string(5) "A16MM"
var_dump(increment('PY999LKD'));  //string(9) "PY1000LKD" 

請注意,此函數將保持不明確的不明確的情況:

var_dump(increment('N008P91F'));  //string(8) "N008P91F"

這個正則表達式應該也可以正常工作'/\\d+/'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM