PHP:随机ID非法字符

时间:2013-08-02 15:31:05

标签: php

我已多次尝试独立,并且我没有非法字符ID。好吧,但是当下面的代码在我的网站上工作时,它会生成非法字符,如:XY DV3VD,L6XÝOMJ3

输出必须由[A-Z]和[0-9]组成。怎么会这样?谢谢您的想法。

function uniqeeID($len){

    //generate a random id encrypt it and store it in $rnd_id 
    $rnd_id = crypt(uniqid(rand(),1)); 

    //to remove any slashes that might have come 
    $rnd_id = strip_tags(stripslashes($rnd_id)); 

    //Removing any . or / and reversing the string 
    $rnd_id = str_replace(".","",$rnd_id); 
    $rnd_id = strrev(str_replace("/","",$rnd_id)); 

    //finally I take the first $len characters from the $rnd_id 
    $rnd_id = strtoupper(substr($rnd_id,0,$len));

    return $rnd_id;

}

2 个答案:

答案 0 :(得分:0)

从技术上讲,它不会生成非法字符,只是生成不符合您的字符编码设置的字符。

最简单的方法就是在不做太多研究的情况下绕过它,就是构造一个你想要的所有字符的字符串,听起来像是一个开销,但它是一个可靠的解决方案。

$allowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

可以找到如何完成交易的优秀解决方案here

答案 1 :(得分:0)

设置为UTF-8编码将解决您的问题。我也使用了那个脚本,并且没有生成非法字符。 generated-chars