我尝试根据定义的掩码创建可自定义的数字。
这是我制作面具的规则
您可以输入任何编号掩码。在此掩码中,可以使用以下标签:{000000}对应于每个客户都会递增的数字。
输入与所需的计数器长度一样多的零。
计数器将由左侧的零完成,以便具有与掩码一样多的零。
{000000+000}与之前相同,但从+first 开始应用与符号右侧数字相对应的偏移量。
{000000@x}与上一个相同,但当x达到月份时(x1 到 12 之间),计数器将重置为零。
如果使用此选项并且为 2 或更高,则还需要x序列{yy}{mm}或。{yyyy}{mm}
{dd}天(01 至 31)。
{mm}月(01 至 12)。
{yy},{yyyy}或{y}超过 2、4 或 1 个数字的年份。
面具中的所有其他字符将保持不变。
不允许有空格。
2007 年 3 月 1 日创建的客户示例:
ABC{yy}{mm}-{000000}将给予ABC0701-000099,
{0000+100}-ZZZ/{dd}/XXX将给予0199-ZZZ/31/XXX
所以我现在的面具是C{000000}
<?php
$mask = "C{000000}";
$number = 100;
if (preg_match('/\{(0+)([@\+][0-9]+)?([@\+][0-9]+)?\}/i',$mask,$regType)){
$masktype=$regType[1];
$masktype_value=substr(preg_replace('/^TE_/','',$number),0,strlen($regType[1]));//get n first characters of code where n is length in mask
$masktype_value=str_pad($masktype_value,strlen($regType[1]),"#",STR_PAD_RIGHT);
$maskwithonlyymcode=$mask;
$maskwithonlyymcode=preg_replace('/\{(0+)([@\+][0-9]+)?([@\+][0-9]+)?\}/i',$regType[1],$maskwithonlyymcode);
$maskwithonlyymcode=preg_replace('/\{dd\}/i','dd',$maskwithonlyymcode);
$maskwithonlyymcode=preg_replace('/\{(c+)(0*)\}/i',$maskrefclient,$maskwithonlyymcode);
$maskwithonlyymcode=preg_replace('/\{(t+)\}/i',$masktype_value,$maskwithonlyymcode);
$maskwithnocode=$maskwithonlyymcode;
$maskwithnocode=preg_replace('/\{yyyy\}/i','yyyy',$maskwithnocode);
$maskwithnocode=preg_replace('/\{yy\}/i','yy',$maskwithnocode);
$maskwithnocode=preg_replace('/\{y\}/i','y',$maskwithnocode);
$maskwithnocode=preg_replace('/\{mm\}/i','mm',$maskwithnocode);
print "maskwithonlyymcode=".$maskwithonlyymcode." maskwithnocode=".$maskwithnocode."\n<br>";
}
?>
但它不工作它正在打印
maskwithonlyymcode=C000000 maskwithnocode=C000000
我想要的输出是C000001- C000100。
这段代码缺少什么?