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