1

ここに、標準の Web フォームからユーザー入力を取得するコードをいくつか示します。

if (get_magic_quotes_gpc()) {
    $searchsport = stripslashes($_POST['sport']);
    $sportarray = array(
        "Football" => "Fb01",
        "Cricket" => "ck32",
        "Tennis" => "Tn43",
    );
    if (isset($sportarray[$searchsport])) {
        header("Location: " . $sportarray[$searchsport] . ".html");
    die;
}

これを変更して(単語が解析されていると思いますか?)、大文字小文字を区別するにはどうすればよいですか?たとえば、「fOoTbAlL」と入力すると、PHP は通常どおり Fb01.html に誘導します。

コードは単なる例であることに注意してください。ユーザーが入力する文字列には、「Crazy aWesOme HarpOOn-Fishing」などの複数の単語を含めることができますが、配列要素が「Crazy Awesome HarpOOn-Fishing」の場合でも機能します (Fダッシュの前の大文字に注意してください)。

4

5 に答える 5

2

次のようにコードを変更できます。

// Searches for values in case-insensitive manner
function in_arrayi($needle, $haystack) {
    return in_array(strtolower($needle), array_map('strtolower', $haystack));
}

$searchsport = $_POST['sport'];
$sportarray = array(
    "Football" => "Fb01",
    "Cricket" => "ck32",
    "Tennis" => "Tn43",
);

if(in_arrayi($searchsport, $sportarray)){
    header("Location: " . $sportarray[$searchsport] . ".html");
    die;
}
于 2010-05-25T12:46:16.513 に答える
2

文字列関数を使用しますstrtolower()

于 2010-05-25T12:41:37.540 に答える
2

最も簡単な方法は、strtolowerを使用してすべてを小文字にして比較することです。

于 2010-05-25T12:42:31.110 に答える
1
$searchsport = strtolower($_POST['sport']);
$sportarray = array(
    "football" => "Fb01",
    "cricket" => "ck32",
    "tennis" => "Tn43",
);
if (isset($sportarray[$searchsport])){
    header("Location: " . $sportarray[$searchsport] . ".html");
    die;
}

このようにして、検索文字列と配列キーは両方とも小文字になり、大文字と小文字を区別しない比較を行うことができます。

キーの大文字と小文字を保持したい場合は、次のようにし$sportarrayます。

$searchsport = ucfirst(strtolower($_POST['sport']));
$sportarray = array(
    "Football" => "Fb01",
    "Cricket" => "ck32",
    "Tennis" => "Tn43",
);
if (isset($sportarray[$searchsport])){
    header("Location: " . $sportarray[$searchsport] . ".html");
    die;
}
于 2010-05-25T12:42:16.877 に答える
0

<?php
$searchsport = $_POST['sport'];
$sportarray = array(
"Football" => "Fb01",
"Cricket" => "ck32",
"Tennis" => "Tn43",
);
if(isset($sportarray[ucfirst(strtolower($searchsport]))])){
    header("Location: ".$sportarray[$searchsport].".html");
    die;
}
?>

注意ucfirst(strtolower($searchsport]))

LE: ucfirst を追加

于 2010-05-25T12:44:48.570 に答える