0

重複の可能性:
PHP の大文字と小文字を区別しない in_array 関数

$input変数と変数を使用して入力を検証する関数を作成してい$whitelistます。どちらも文字列であり、関数は$whitelist変数を解析し、文字列で使用する文字配列にします。

何らかの理由で、in_array関数が小文字と大文字を区別していません (少なくとも、それが起こっていると思います)。

コードへのリンク: http://pastebin.com/eadAV7gg

4

1 に答える 1

0

文字の小文字の値と照合してみませんか。$inputif ステートメントで一致する場合は、実際の文字列を変更することを心配する必要はありません。

foreach ($inputArray as $key => $value)
{
    foreach ($whitelistArray as $key2 => $value2)
    {
        if (in_array(strtolower($value), $whitelistArray))
        {
            //Do nothing, check passed
        }
        else
        {
            unset($inputArray[$key]);
        }
    }
}

あなたが持っているもののはるかに短いバージョンで達成することができます:

$input = "ATTT";
$whitelist = "abcdefghijklmnopqrstuvwxyz";
$output = '';

for($x=0; $x<strlen($input);$x++){
    if(stristr($whitelist,substr(strtolower($input),$x,1))){
        $output .= substr($input,$x,1);
    }
}
echo $output;

または、関数として実装するには:

function whitelist_string($input=''){

    $whitelist = "abcdefghijklmnopqrstuvwxyz";
    $output = '';

    for($x=0; $x<strlen($input);$x++){
        if(stristr($whitelist,substr(strtolower($input),$x,1))){
            $output .= substr($input,$x,1);
        }
    }
    return $output;
}

echo whitelist_string('ATTT').'<br>';
echo whitelist_string('Hello88 World!').'<br>';
于 2013-01-29T21:37:12.560 に答える