php M或F(男性或女性)

时间:2009-11-29 12:30:01

标签: php

我知道有更优雅的方式来设置一个html表单来接受男性或女性的输入;但是,我正在学习,我只是想知道这是否也有可能:

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

如果是这样,我如何使用正则表达式进行检查? 用户是否键入M或F.

我在想:

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

然后调用checksex作为第三个检查添加到if条件,如下所示:

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

4 个答案:

答案 0 :(得分:7)

要检查用户是否输入了M或F,您需要做的就是字符串比较。不需要正则表达式

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

但是,为什么不使用select box或单选按钮,而不是让用户输入M或F?

选择框可能看起来像这样

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

或单选按钮:

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

当然,您仍然必须检查$_POST['sex']是否仍为M或F,并处理不是其中任何一个的情况,因为用户可能决定发布无效值。

答案 1 :(得分:4)

试试这个“(M | F){1}”,不加引号

答案 2 :(得分:2)

怎么样

// 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');

它是一个名为Ternary Operator的条件运算符。就像

(if子句)? (然后):(其他);

或者

(expr 1)? (expr 2):( expr 3);

如果expr 1为真,则计算

expr 2 如果expr 1为假,则评估expr 3

参考:http://php.net/manual/en/language.operators.comparison.php

答案 3 :(得分:1)

$s = $_POST['sex'];

if(isset($s) && $s == 'M') {
    $sex = "Male";
} elseif(isset($s) && $s == 'F') {
    $sex = "Female";
} else {
    $sex = "Please enter a valid gender";
}