1

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

当输入值为0.00or时,我怎样才能让函数工作0.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 '';
            }
}
4

1 回答 1

0

错误在这里:

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

请注意,这$price是一个字符串;因此,$price['price']返回该数组的第一个字符,因为解释器应该在逻辑上尝试$price[intval('price')]where intval('price') == 0。因此,$price['price'] == $price[0].

例如,如果输入是0.00,那么根据 PHP 手册$price['price']将返回被认为是空的。0

我认为您打算执行以下操作(与0.00and一起使用0.50):

$price = $_POST['price'];
$priceString = empty($price)?null:trim($price);
于 2012-07-29T20:49:44.577 回答