0
私は問題があります。私の機能を読んでいくうちに明らかになるでしょうが、何をすべきか分かりません。シンプル?私の機能を持つ論理的欠陥
問題は「do」を使用する必要があるということです。「do」の結果が必要なため、「while」でテストする必要があります。問題は、whileがfalseを返す4つの条件をすべて取得すると終了しますが、それは悪いコードで私を残します。
区別できない文字が含まれなくなるまでコードを再生成する必要があります。
function make_code(){
do{
$prefix = mt_rand(0, mt_getrandmax());
$code = uniqid($prefix);//good to make sure we always have a unique string to work with, even with no seed supplied.
$sha1 = sha1($code);
$base_convert = base_convert($sha1, 16, 36);//expand hex with the rest of the alphabet.
$substr = substr($base_convert, 0, 12);//we only want the first 12 characters.
$strtoupper = strtoupper($substr);//for aesthetics.
$str_split = str_split($strtoupper, 4);//seperate into chunks.
$voucher_code = $str_split[0] . self::CS . $str_split[1] . self::CS . $str_split[2];//build
}
while(
(stristr($voucher_code, "o") === false)
&& (stristr($voucher_code, "0") === false)
&& (stristr($voucher_code, "1") === false)
&& (stristr($voucher_code, "i") === false));
return $voucher_code;
}
}
ありがとうございました。
こんにちは、Marc。これらのコードは、スクラッチが付いたプラスチックカードに印刷され、スーパーマーケットで販売される予定です。フォントはあまりカスタマイズできず、私のアリーナではありません。 –
preg_matchはロジックの問題を修正して動作しますが、大文字と小文字を区別しなくても大文字I文字を表示しています。 :S –
これは '/ i'の後ろにあるものです。マッチで大文字小文字を区別しません。 –