我知道有更优雅的方法来设置一个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();
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,我如何使用正则表达式进行检查?用户是否键入M或F.
我在想:
function checksex($sexcheck)
{
//Some regex here to check the sex?
return preg_match(' ', $sexcheck);
}
Run Code Online (Sandbox Code Playgroud)
然后调用checksex作为第三个检查添加到if条件,如下所示:
if (empty($_POST['sex'])==FALSE && sanityCheck($_POST['sex'], 'string', 1) != FALSE && checksex($_POST['sex'], 1) ==TRUE)
{
...
}
Run Code Online (Sandbox Code Playgroud)
要检查用户是否键入了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';
}
Run Code Online (Sandbox Code Playgroud)
但是,为什么不使用选择框或单选按钮,而不是让用户键入M或F ?
选择框可能看起来像这样
<select name='sex'>
<option selected="yes" value="NA">Not Saying</option>
<option value="F">Female</option>
<option value="M">Male</option>
</select>
Run Code Online (Sandbox Code Playgroud)
或单选按钮:
<input type="radio" name="sex" value="M" /> Male <br />
<input type="radio" name="sex" value="F" /> Female
Run Code Online (Sandbox Code Playgroud)
当然,你仍然必须检查它$_POST['sex']仍然是M或F,并处理它不是它们中的任何一个的情况,因为用户可能决定发布无效值.