Мой скрипт читает txt-файл, а затем записывает значения в таблицу базы данных. Существует поле с ценой, а в txt цена файла с 4-значными значениями имеет пробел после первой цифры (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);
Я могу удалить существовал, это не проблема. Должен ли я менять тип данных по цене? – Eugene
@Eugene Конечно, вы можете заказать по цене или искать ценовые диапазоны в будущем, поэтому всегда предпочтительным является числовое значение. Целые числа или десятичные знаки, хотя и поплавков, приводят к ошибкам округления. – jeroen
Пробелы исчезли, но теперь он удалил мой «.». от цены, такой как 35,75 стать 3575 – Eugene