[英]PHP Increment alphanumeric string
我在一個頁面上工作,用戶將使用帶有一組數據的數據表查看表格。 他們需要選擇自己的編號,可以只是數字或字母數字和增量。
因此,這將有兩個輸入一個起始編號,可能是他們想喜歡什么: 1
, A01
, 01
, A01M
和這樣的例子不勝枚舉。 所以組合可能是無止境的。
然后列表繼續,現在棘手的是增量。 用戶需要選擇將增量設置為任何數字,因為它可能在末尾有不應更改的字符, $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.