PHP验证输入以查找用户是否输入数字后跟特定文本

时间:2015-03-31 20:37:58

标签: php

我有一个输入,用户可以输入一个数字,然后是(之间没有空格):mi表示分钟,hr表示小时,dy表示天数,wk表示数周或mo表示月份。例如,用户可以输入1mo。我想检查用户输入的数字后跟mi,hr,dy,wk或mo,没有空格。文本需要与上面完全相同。

这是我到目前为止所得到的,但我被困住了:

<div class="form-group">
    <label>Remember Me Length</label>
    <input type='text' class="form-control" name="settings[<?php echo $settings['remember_me_length']['id']; ?>]" value="<?php echo $remember_me_length; ?>" />
    <span id="helpBlock" class="help-block">You may enter any number, followed by (no spaces between): mi for minutes, hr for hours, dy for days, wk for weeks, or mo for months.</span> 
</div>


$cfgId = array();
$newSettings = $_POST['settings'];
//Validate remember me length
if ($newSettings[9] != $remember_me_length) {
    $newRemember_me_length = $newSettings[9];
    if(!in_array($newRemember_me_length, array('mi','hr','dy','wk','mo'), true )) {
        $errors[] = lang("CONFIG_INVALID_SPACE_LENGTH");
    } elseif (count($errors) == 0) {
        $cfgId[] = 9;
        $cfgValue[9] = $newRemember_me_length;
        $remember_me_length = $newRemember_me_length;
    }
}

有人可以指导我朝正确的方向前进吗?如果我需要提供更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

听起来像是正则表达式的工作:

if (preg_match('/\d+(mi|hr|dy|wk|mo)/', $value)) {
    echo 'valid';
} else {
    echo 'invalid';
}