我有一些自动生成字符串的代码,但其中一些特殊字符显示如下:�
代码:
header("Content-type: text/html; charset=utf-8");
function RandomString($length = 10){
$chars ='0123456789abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ!#¤%&()=?@£$€{}[]+';
$randString = '';
for($i = 0; $i < $length; $i++){
$randString .= $chars[rand(0, 88)];
}
echo $randString;
return $randString;
}发布于 2015-01-25 18:26:27
$chars数组中有几个字符,它们是多字节字符(确切地说,是UTF-8)。不幸的是,PHP本身并不能很好地处理多字节字符。
这里的一个解决方案是用支持多字节字符的变体替换所有调用。mbstring扩展提供了这样的支持。
您可以将调用替换为$chars[rand(0,88)],代之以调用底座函数。所以你得到了类似于mb_substr($chars, rand(0, 88), 1)的东西。
https://stackoverflow.com/questions/28139692
复制相似问题