我已多次尝试独立,并且我没有非法字符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;
}
答案 0 :(得分:0)
从技术上讲,它不会生成非法字符,只是生成不符合您的字符编码设置的字符。
最简单的方法就是在不做太多研究的情况下绕过它,就是构造一个你想要的所有字符的字符串,听起来像是一个开销,但它是一个可靠的解决方案。
$allowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
可以找到如何完成交易的优秀解决方案here。
答案 1 :(得分:0)
设置为UTF-8编码将解决您的问题。我也使用了那个脚本,并且没有生成非法字符。 generated-chars