Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php str_替换错误的十进制数_Php - Fatal编程技术网

Php str_替换错误的十进制数

Php str_替换错误的十进制数,php,Php,这是我在Stackoverflow的第一个问题,请耐心听我说:) 在过去的几个小时里,我一直在尝试替换从数据库上传和下载的符号 How it should be: Input: 100.000,25 Stored in database: 100000.25 Output: 100.200,25 原因是我需要逗号作为十进制分隔符,点作为千分隔符。我仍然需要能够对数据库中存储的数字进行加法/乘法等操作 How it should be: Input: 100.000,25 Stored in d

这是我在Stackoverflow的第一个问题,请耐心听我说:)

在过去的几个小时里,我一直在尝试替换从数据库上传和下载的符号

How it should be:
Input: 100.000,25
Stored in database: 100000.25
Output: 100.200,25
原因是我需要逗号作为十进制分隔符,点作为千分隔符。我仍然需要能够对数据库中存储的数字进行加法/乘法等操作

How it should be:
Input: 100.000,25
Stored in database: 100000.25
Output: 100.200,25
到目前为止,我尝试过的最有效的方法是:

// Value from form input:
$value = 100.200,25;

// Removing all but numbers and comma


$remove_symbols = array("+"," ",".","-","'","\"","&","!","?",":",";","#","~","=","/","$","£","^","(",")","_","<",">");
$db_value = str_replace($remove_symbols, '', $value);



      // $db_value  insert into db

        // Pulling out the data
        $db_pulled = number_format($row['liter'],2,',','.');  
        echo $db_pulled;

   :( returns: 100.200,00 (should return 100.200,25) 
//表单输入的值:
$value=100.200,25;
//删除除数字和逗号以外的所有内容
$remove_symbols=数组(“+”、“、”、“-”、“”、“\”、“&”、“!”、“?”、“:”、“;”、“~”、“=”、“/”、“$”、“£”、“^”、“(“、”、“)、”;
$db_value=str_replace($remove_symbols,,$value);
//$db_值 插入数据库
//提取数据
$db_pull=number_格式($row['lill',2',',',',');
echo$db_拉;
:(返回值:100.200,00(应返回100.200,25)

您的问题有点让人困惑,而且您没有很好地标记它们。例如,php标记更合适、更充分。(我现在为您修改了它)

好的。您遇到的问题是,您需要用点替换逗号,因为浮点值就是这样表示的。在您的示例中,在DB中插入逗号时,它可能会被截断

以下是您可以做的:

<?php
        $numString = "100.200,25";
        $numString = str_replace(array('.', ','), array('','.'), $numString);
        $num = floatval($numString);
        echo $num;
?>

看到您的代码返回:100.200,00(应该返回100.200,25)

您的数据库表字段似乎是整数格式,而不是十进制格式


有关数字字段类型的详细信息,请访问

oh sweet Choubaca。停止使用黑名单。使用0-9和的白名单。最好使用纯数字格式