字符串18位,后10位由用户id组成,但是目前用户id长度为8,需要在不足10位时前面加前导0,以便可以兼容日后用户id增加长度的情况。同时,也要在18位字符串中取出用户id,这里的用户id同样不能包括前导0。
真是一个让人头疼的东西,绕来绕去的,烦啊。不过,烦咱不也得做吗?呵呵~~
首先,加前导0这个工作php有现成的函数可以替咱完成。
str_pad ― Pad a string to a certain length with another string
string str_pad ( string $input , int $pad_length [, string $pad_string [, int $pad_type ]] )
有了这个函数,咱可以想加前导0就加前导0,想加后导0就加后导0,呵呵。
$entity_key = str_pad($qid,10,'0',STR_PAD_LEFT);
可是从这18位中分析出不含有前导0的用户id咋办?这可没有现成的函数啊!不过咱可以使用正则,虽然好久不用了,不过小来小去的还是可以装上一装的。呵。
$pattern = "/(0+)(\d+)/i";
$replacement = "\$2";
$qid = substr($id,-10);
$qid = preg_replace($pattern,$replacement,$qid);
$replacement = "\$2";
$qid = substr($id,-10);
$qid = preg_replace($pattern,$replacement,$qid);
大功告成。