php M veya F (erkek veya kadın)

3 Cevap

Ben erkek veya kadın girişini almak için bir html form kurmak için daha şık yolları vardır biliyorum; Ancak, ben öğreniyorum, ve bu da mümkün olup olmadığını ben sadece merak ediyorum:

//Incorporate two checks
 if (empty($_POST['sex'])==FALSE && sanityCheck($_POST['sex'], 'string', 1)==TRUE)
      {
      // if the checks are ok for  sex we assign sex  to a variable
      $sex = $_POST['sex'];
       }
      else
      {
      // if all is not well we echo an error message
      echo 'Please enter a valid Gender';
      // and exit the script
      exit();
      }

If so, how would I check this with regex? Whether the user typed M or F.

Düşünüyorum:

function checksex($sexcheck)
{
//Some regex here to check the sex?
  return preg_match('               ', $sexcheck);
}

Üçüncü bir çek eğer koşullu eklenen Ve sonra bu gibi checksex çağırır:

if (empty($_POST['sex'])==FALSE && sanityCheck($_POST['sex'], 'string', 1) != FALSE && checksex($_POST['sex'], 1) ==TRUE)
{
...
}

3 Cevap

Kullanıcı M veya F yazdıysanız kontrol etmek için yapmanız gerekir her bir dize karşılaştırma. Regex için gerek yok

if ( isset($_POST['sex']) ){
    $sex = $_POST['sex'];
    if ( $sex == 'M' ){
        echo 'Male';
    }else if ( $sex == 'F' ){
        echo 'Female';
    }else{
        echo 'Please enter a valid Gender';
    }
}else{
    echo 'Please enter a valid Gender';
}

Ancak, oldukça kullanıcı M veya F tip dışarı yerine, neden bir select box veya Radyo Düğmeleri kullanmak değil mi?

Bir seçim kutusu gibi bir şey görünebilir

<select name='sex'>
    <option selected="yes" value="NA">Not Saying</option>
    <option value="F">Female</option>
    <option value="M">Male</option>
 </select>

Veya radyo düğmeleri:

<input type="radio" name="sex" value="M" /> Male <br />
<input type="radio" name="sex" value="F" /> Female

Elbette hala $_POST['sex'] hala M veya F kontrol ve kullanıcı geçersiz bir değer göndermek için karar verebilir gibi, onlardan da değil durumda işlemek gerekir.

Tırnak işaretleri olmadan | "{1} (F M)" bu deneyin

Nasıl hakkında

// check if the sex variable is 'f' or 'm'
        $sex = ($_POST['sex'] == 'f' || $_POST['sex'] == 'm') ? $_POST['sex'] : false;
// thanks to peter
    // if $sex is false then echo..
        if (!$sex)
            echo ('Please enter a valid Gender');

Açıklama

Üçlü Operatör olarak adlandırılan bir koşullu operatörü. Onun gibi

(Madde varsa)? (Sonra): (else);

Veya

(Ifade 1)? (Ifade 2): (ifade 3);

expr 2 is evaluated if expr 1 is true expr 3 is evaluated if expr 1 is false

Ref: http://php.net/manual/en/language.operators.comparison.php