2013-01-06 67 views
1

基本上這隻需要接受一個價格值,只能是40或39.95或100.09或4等,如果用戶輸入除了數字以外的任何數字,它會返回一個錯誤。PHP和正則表達式,如何去除美元符號和百分比符號,如果用戶輸入它?

我的問題:我該如何改變它,以便如果用戶在輸入字段中輸入一個美元符號,它只是被剝離出來而不是在特定情況下返回錯誤?


if (ereg_replace('/^\d+(\.\d{2})?$/', $_POST['itemAmt'])) { 
    echo '<h1>The original cost of the item: $' . $_POST['itemAmt'] . ' </h1>'; 
} else { 
    echo '<h1 style="color:red; font-weight:900;">The price value was not numeric, try again :) </h1><br>'; 
} 
+0

所有ereg_ *功能已被棄用。檢查文檔http://php.net/ereg_replace –

+2

永不改變數據,使驗證器,驗證用戶的輸入,並返回如果用戶輸入錯誤的數據返回... –

回答

5
$itemAmt = str_replace(array('$', '%'), '', $_POST['itemAmt']); 
2
preg_replace('#[^0-9\.]+#','',$_POST['itemAmt']); 
0

可能的方式

if (preg_match('/^(\d+(?:\.\d+)?)[\$%]?$/', $_POST['itemAmt'])) { 
    $validprice = preg_replace('/^(\d+(?:\.\d+)?)[\$%]?$/', '\1', $_POST['itemAmt']); 
} else { 
    // invalid input 
} 
相關問題