我尝试根据定义的掩码创建可自定义的数字。
这是我制作面具的规则
您可以输入任何编号掩码。在此掩码中,可以使用以下标签:{000000}
对应于每个客户都会递增的数字。
输入与所需的计数器长度一样多的零。
计数器将由左侧的零完成,以便具有与掩码一样多的零。
{000000+000}
与之前相同,但从+
first 开始应用与符号右侧数字相对应的偏移量。
{000000@x}
与上一个相同,但当x
达到月份时(x
1 到 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
。
这段代码缺少什么?