无法删除字符串中的空格

时间:2015-04-25 14:08:50

标签: php mysql kohana

我的脚本读取txt文件,然后将值写入数据库表。有一个有价格的字段,在txt文件中,4位数值的价格在第一个数字后有2个空格(前2 500个)。我把这个函数(str_replace运行良好并替换','但当我用它来删除空格时它不会这样做,最后我把preg_replace但它也跳过空格):

$model->price = preg_replace('/\s+/','',str_replace(',', '.', $row_data[3]));

我表中价格字段的数据类型是varchar,当我使用int或decimal时,它会跳过空格后的数字(2 070变为2,12 015 => 12)。我必须在集成阶段删除这个空间,因为当我使用价格字段进行操作时,php会跳过空格后的数字,而我的进一步操作会出错。

男人们有什么问题?

UPD 来自@jeroen的解决方案效果很好,我将价格字段更改为十进制(10,2)并将此行用于解析字符串的价格:

$model->price = filter_var(str_replace(',', '.', $row_data[3]), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); 

2 个答案:

答案 0 :(得分:2)

我不会使用正则表达式而是使用filter

// replace if necessary
$number = str_replace(',', '.', $row_data[3]);

// filter unwanted characters
$model->price = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);

您应该确保更新数据库中的所有价格,以便可以切换到数据库本身的数值。

答案 1 :(得分:0)

为什么不在空格上使用str_replace?比正则表达式更容易

str_replace(array(',', ' '), array('.', ''), $row_data[3]);