我的脚本读取txt文件,然后将值写入数据库表中。有一个价格字段,在txt文件中,4位数的价格在第一位后有空格(2 500 ex.)。我使用了这个函数(str_replace可以很好地替换逗号,但是当我用它来去除空格时,它无法做到,最后我使用preg_replace,但它也跳过了空格):
$model->price = preg_replace('/\s+/','',str_replace(',', '.', $row_data[3]));
我的表中价格字段的数据类型是varchar,当我使用int或decimal时,它会跳过空格后面的数字(2 070变成2,12 015变成12)。我必须在集成阶段删除这个空格,因为当我对价格字段进行操作时,php会跳过空格后面的数字,导致我的进一步操作出现错误。
问题是什么呢?
更新:@jeroen的解决方案非常好,我将价格字段更改为decimal(10,2),并添加了这行代码来解析价格字符串。
$model->price = filter_var(str_replace(',', '.', $row_data[3]), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);