PHP web formu durumda girdi duyarsız yapıyor?

5 Cevap php

Yani standart bir web formu kullanıcı girişi alır burada bazı kod var:

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;
}

Nasıl bu davayı * in * duyarlı hale getirmek için (Ben kelime ayrıştırma olduğunu düşünüyorum?) Bu değiştirme hakkında gitmek istiyorsunuz? Örneğin, "futbol" yazın ve php normalde Fb01.html beni yönlendirecektir.

EDIT: kod sadece bir örnek olduğunu unutmayın, kullanıcı tarafından girilen dize "çılgın müthiş Harpoon-Balıkçılık" demek birden fazla sözcük içerebilir ve dizi eleman "Crazy Başar Harpoon-Balıkçılık" (dikkat eğer hala işe yarayacağını dash önce başkent F).

5 Cevap

$searchsport = strtolower($_POST['sport']);
$sportarray = array(
"football" => "Fb01",
"cricket" => "ck32",
"tennis" => "Tn43",
);
if(isset($sportarray[$searchsport])){
header("Location: ".$sportarray[$searchsport].".html");
die;
}

Bu şekilde arama dizesi ve Dizi anahtarları küçük harf ve küçük harf duyarsız karşılaştırma yapabilirsiniz.

Yapabileceğiniz $sportarray tuşları harf korumak istiyorsanız:

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

Ben bir dize işlevi strtolower() kullanmak istiyorsunuz. http://uk3.php.net/strtolower

kolay yolu strtolower her küçük sizin karşılaştırma yapmak yapmak için kullanmaktır

Böyle kodunuzu değiştirebilirsiniz:

// 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;
}

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

uyarısı ucfirst(strtolower($searchsport]))?

LE: ucfirst eklendi