【发布时间】:2014-11-02 15:12:30
【问题描述】:
我有一个表单,用户可以写不同的数字,可以是十进制,但格式与 PHP 和 MySQL 的默认格式不同。这是我使用的格式:
1,1(一个点一)- 1.000,90(一千零九十)- 1.000.000,90(一百万零九十)等
现在我有这个功能:
function formato_num($num){
$num = str_replace('.', '', $num);
$num = str_replace(',', '.', $num);
return $num;
}
在这些情况下它可以正常工作,但是如果用户出于某种原因使用点 (.) 写入小数,则它不起作用。
我有这个其他功能,但它不能完全正常工作:
if(strpos($_POST['num'],'.') !== false){
$decimal = $_POST['num'];
$split = explode('.', $decimal);
$l = strlen($split[1]);
if($l < 3){
echo str_replace('.', ',', $_POST['num']);
}else{
$num = str_replace('.', '', $_POST['num']);
$num = str_replace(',', '.', $_POST['num']);
echo $num;
}
}
有什么帮助吗?谢谢。
示例:
如果用户写: 1.000(一千)我在 DDBB 上保存为 1000。 1,2(十进制)我保存为 1.1。
问题是如果用户使用点作为千位分隔符和小数。
【问题讨论】:
-
看看 PHP 正则表达式
-
如果您打算保存这两个数字,是否有理由不将它们保存为两个不同的整数?
-
如果用户用点写小数点,那么你就有一个不明确的值。您将如何区分这些值?编辑您的问题并提供一些示例以及您希望它们转换为的内容。
-
我添加了一些例子。
-
$num = number_format($num,'.',',',2);应该工作而不是所有的 str_replace 和东西???