我目前正在验证美国货币以及十进制数字格式。我使用函数money_format
,但问题是某些值返回错误。
当输入值为0.00
或0.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 :(得分: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}}