PHP验证输入,以确定用户是否键入后面跟着特定文本的数字


PHP validate input to find if user type in number followed by specific text

我有一个输入,用户可以输入一个数字,后跟(之间没有空格):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;
    }
}

有人能指引我朝正确的方向走吗?如果我需要包含更多信息,请告诉我。

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

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