php函数随机文字

发布网友

我来回答

5个回答

热心网友

把你函数中的
string
函数换成
mbstring
的函数,就应该不会出乱码了。
比如
strlen
换成
mb_strlen。
具体用到什么函数不知道,所已不能作具体回答。
还有,可以用程序随机生成汉字字串:
<?php
function
getChineseChar()
{
$unidec
=
rand(hexdec('4e00'),
hexdec('9fa5'));
$unichr
=
''
.
$unidec
.
';';
$zhcnchr
=
mb_convert_encoding($unichr,
"UTF-8",
"HTML-ENTITIES");
return
$zhcnchr;
}
function
getRandStr($len)
{
$str
=
'';
for($i=0;$i<$len;$i++)
{
$str
=
$str
.
getChineseChar();
}
return
$str;
}
echo
getRandStr(4);
?>
不过,如果是用于验证,不推荐这种做法,因为随机生成的汉字大多比较生僻,很难输入。

热心网友

请提供下代码片段
另外,注意下是不是编码问题。例如:你的脚本是用UTF-8保存的,但是页面是用GB2312来显示

是我搞错了,这个不能用索引了,修改下:
你的程序是用什么编码方式呢?UTF-8还是GB2312?
UTF-8是占三字节的,GB2312是占两字节的。
所以你的代码要改一下,我以UTF-8为例:
function code_keys($length){
$pattern = '补充提问细节,以得到更准确的答案';
for($i=0;$i<$length;$i++) {
$key .= substr($pattern,mt_rand(0,8)*3,3);//要以三字节为单位处理

}
return $key;
}

那就是你的编码问题了,我这个是UTF-8的,已经测试通过。
你可以试试把3改成2。
至于如何查看是什么编码,楼主可以用记事本打开你的脚本,然后“另存为”,在下面就可以看到编码方式了。

热心网友

把你函数中的 string 函数换成 mbstring 的函数,就应该不会出乱码了。
比如 strlen 换成 mb_strlen。

具体用到什么函数不知道,所已不能作具体回答。

还有,可以用程序随机生成汉字字串:

<?php
function getChineseChar() {
$unidec = rand(hexdec('4e00'), hexdec('9fa5'));
$unichr = '&#' . $unidec . ';';
$zhcnchr = mb_convert_encoding($unichr, "UTF-8", "HTML-ENTITIES");
return $zhcnchr;
}

function getRandStr($len) {
$str = '';
for($i=0;$i<$len;$i++) {
$str = $str . getChineseChar();
}
return $str;
}

echo getRandStr(4);
?>

不过,如果是用于验证,不推荐这种做法,因为随机生成的汉字大多比较生僻,很难输入。

热心网友

请提供下代码片段
另外,注意下是不是编码问题。例如:你的脚本是用UTF-8保存的,但是页面是用GB2312来显示
是我搞错了,这个不能用索引了,修改下:
你的程序是用什么编码方式呢?UTF-8还是GB2312?
UTF-8是占三字节的,GB2312是占两字节的。
所以你的代码要改一下,我以UTF-8为例:
function
code_keys($length){
$pattern
=
'补充提问细节,以得到更准确的答案';
for($i=0;$i<$length;$i++)
{
$key
.=
substr($pattern,mt_rand(0,8)*3,3);//要以三字节为单位处理
}
return
$key;
}
那就是你的编码问题了,我这个是UTF-8的,已经测试通过。
你可以试试把3改成2。
至于如何查看是什么编码,楼主可以用记事本打开你的脚本,然后“另存为”,在下面就可以看到编码方式了。

热心网友

这个其实和数字字母也都是一样的哈~~
就是要注意gb2312编码里面不要超限就行了哈~~还有就是编码规则稍微注意下就好了~~

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com