PHP money_format:值为0.00 / 0.50 / .50的问题

时间:2012-07-29 20:04:50

标签: php

我目前正在验证美国货币以及十进制数字格式。我使用函数money_format,但问题是某些值返回错误。

当输入值为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 '';
            }
}

1 个答案:

答案 0 :(得分: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.00被视为空。

我认为您打算使用以下内容(适用于0.50$price = $_POST['price']; $priceString = empty($price)?null:trim($price); ):

{{1}}