2012-07-29 32 views
1

我目前正在驗證美國貨幣以及十進制數字格式。我正在使用函數money_format,但問題是某些值返回錯誤。PHP money_format:問題與值0.00/0.50/.50

當輸入值爲0.000.50時,我該如何使功能起作用? Example

PHP

if (isset($_POST['price'])){ 
    $price = $_POST['price']; 
    $priceString = empty($price['price'])?null:trim($price['price']); 
     if(!empty($priceString)) { 
      $price = str_replace("$", "", $price); 
       if (preg_match('/^[+\-]?\d+(\.\d+)?$/', $price)){ 
       echo ('<div id="price"><span id="resultval"><h2>Price:</h2>'.money_format('%n', $price).'</span></div>'); 
          } 
        else { 
      echo ('<div id="price"><span id="resultval"><h2>Price:</h2><div class="errorMessage">Enter a valid number in US currency format.</div></span></div>'); 
          } 
} 
      else { 
      echo ''; 
      } 
} 
+0

使用 - money_format()或number_format();不要使用這個 – 2012-07-29 20:08:08

回答

0

的錯誤是在這裏:

$price = $_POST['price']; 
$priceString = empty($price['price'])?null:trim($price['price']); 

注意,$price是一個字符串;所以,$price['price']返回該數組的第一個字符,因爲解釋器應邏輯嘗試$price[intval('price')],其中intval('price') == 0。因此,$price['price'] == $price[0]

例如,如果輸入爲0.00,則$price['price']將返回0,根據PHP手冊將其視爲空。

我想你打算以下(與0.000.50作品):

$price = $_POST['price']; 
$priceString = empty($price)?null:trim($price); 
+0

的正則表達式哇,我完全跳過了那個錯誤。謝謝!它現在工作正常 – CodingWonders90 2012-07-29 20:53:50