重複の可能性:
PHP の大文字と小文字を区別しない in_array 関数
$input
変数と変数を使用して入力を検証する関数を作成してい$whitelist
ます。どちらも文字列であり、関数は$whitelist
変数を解析し、文字列で使用する文字配列にします。
何らかの理由で、in_array
関数が小文字と大文字を区別していません (少なくとも、それが起こっていると思います)。
コードへのリンク: http://pastebin.com/eadAV7gg
重複の可能性:
PHP の大文字と小文字を区別しない in_array 関数
$input
変数と変数を使用して入力を検証する関数を作成してい$whitelist
ます。どちらも文字列であり、関数は$whitelist
変数を解析し、文字列で使用する文字配列にします。
何らかの理由で、in_array
関数が小文字と大文字を区別していません (少なくとも、それが起こっていると思います)。
コードへのリンク: http://pastebin.com/eadAV7gg
文字の小文字の値と照合してみませんか。$input
if ステートメントで一致する場合は、実際の文字列を変更することを心配する必要はありません。
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>';