Home >Backend Development >PHP Tutorial >javascript - php制作中文验证码的文字数组问题

javascript - php制作中文验证码的文字数组问题

WBOY
WBOYOriginal
2016-06-06 20:09:351001browse

<code>在做一个php中文验证码时,按原本的思路是将一段文字分割成一个个文字组成个文字数组,然后遍历四次,随机生成四个验证文字,然后画在image上,可是发现用`str_split($str,3)`来分割有时会少一个文字,换成`explode(" ",$str)`还是偶尔缺字。。。

主要代码如下:`

 $fontFace='aa.ttf';
    $str=" 大 闸 是 中 国 主 导 品 牌 亦 行 业 协 会 重 点 推 荐 家 集 养 殖 与 销 售";
    $strDb=str_split($str,3);
for($i=0;$i</code>

回复内容:

<code>在做一个php中文验证码时,按原本的思路是将一段文字分割成一个个文字组成个文字数组,然后遍历四次,随机生成四个验证文字,然后画在image上,可是发现用`str_split($str,3)`来分割有时会少一个文字,换成`explode(" ",$str)`还是偶尔缺字。。。

主要代码如下:`

 $fontFace='aa.ttf';
    $str=" 大 闸 是 中 国 主 导 品 牌 亦 行 业 协 会 重 点 推 荐 家 集 养 殖 与 销 售";
    $strDb=str_split($str,3);
for($i=0;$i</code>

javascript - php制作中文验证码的文字数组问题
两个点,第一个是$str不用空格分开,第二个是生成随机index的时候,应该是-1,不是+1
像这种取数组中某个随机值的时候,index可以用array_rand()函数来生成
改完如下

<code>$fontFace='aa.ttf';
    $str="大闸是中国主导品牌亦行业协会重点推荐家集养殖与销售";
    $strDb=str_split($str,3);
for($i=0;$i</code>

用mb扩展的函数处理字符串,解决编码问题,另外空格有啥用么?

如果$str含中英文用这个分割$strDb=preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn