2015-03-31 32 views
0

我有一個輸入,用戶可以輸入一個數字後跟(之間沒有空格):mi表示分鐘,hr表示小時,dy表示天數,wk表示for幾個星期,或幾個月。例如,用戶可以輸入1mo。我想檢查用戶是否輸入了一個數字,然後輸入mi,hr,dy,wk或mo,並且沒有空格。文本需要完全像上面那樣寫。PHP驗證輸入以查找用戶是否輸入了數字,然後是特定文本

這是我得到了這麼遠,但我堅持:

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

是否有人可以指導我在正確的方向?如果我需要包含更多信息,請告訴我。

+0

難道這最終將是某種形式的地方提交? – Jared 2015-03-31 20:42:42

+0

@jared是的,抱歉,我應該在我的問題中指定。用戶將填寫輸入並提交表單。邁克,我從來沒有使用正則表達式,甚至不知道從哪裏開始。 – iamthestreets 2015-03-31 20:43:49

+2

我會編號字段,然後收音機可能爲mi,hr,dy等......如果您需要將它們分開,以後會更容易使用。 – AbraCadaver 2015-03-31 20:44:35

回答

0

聽起來像是正則表達式工作:

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

我可以像這樣使用它:'!preg_match'? – iamthestreets 2015-03-31 20:46:01

+0

是的,這就是PHP的工作原理...... – Mike 2015-03-31 20:46:46

+0

但是,您應該接受abracadaver的建議,讓用戶輸入一個數字,並讓時間單位成爲選擇框或收音機。 – Mike 2015-03-31 20:47:57

相關問題