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


PHP money_format: issues with values 0.00/0.50/.50

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

当输入值0.000.50时,如何让函数工作?例

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

错误在这里:

$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);