我目前正在验证美元以及十进制数字格式。我正在使用该函数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 '';
}
}
错误在这里:
$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);