1

現在、米国通貨と 10 進数形式を検証しています。関数を使用していますmoney_formatが、特定の値がエラーを返すという問題があります。

0.00入力値がまたはの場合に関数を機能させるにはどうすればよい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これは文字列であることに注意してください。そのため、インタープリターは論理的に where $price['price']を試行する必要があるため、その配列の最初の文字を返します。その結果、.$price[intval('price')]intval('price') == 0$price['price'] == $price[0]

たとえば、入力が の場合0.00、PHP マニュアルに従って空と見なされる$price['price']が返されます。0

私はあなたが次のことを意図していると思います(これは と で動作します0.000.50

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