0

我已经多次尝试独立使用它,但我没有得到非法字符的 ID。好吧,但是当下面的代码在我的网站上运行时,它会生成非法字符,例如:XY�DV3VD、L6XÝOMJ3

输出必须由 [AZ] 和 [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;

}
4

2 回答 2

0

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

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

$allowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

可以在此处找到如何完成交易的出色解决方案。

于 2013-08-02T15:38:13.613 回答
0

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

于 2016-02-07T05:25:40.843 回答