Как удалить пробелы в строке PHP

Занимаясь разработкой калькулятора столкнулся с проблемой, что строка типа  1 234 неправильно переводилась в число. В PHP преобразовать строку в число в PHP можно тремя способами. Функцией bool settype (mixed &var, string type), функциейint intval(mixed var [,int base]) или приведением к типу — (int) или (integer).

// Первый способ
$str = "1 234";
$str = (int)$str;
var_dump($str);   // 1

// Второй способ
$str = "1 234";
settype($str, 'integer');
var_dump($str);   // 1

// Третий способ
$str = "1 234";
$str = intval($str, 'integer');
var_dump($str);   // 1

Стал пробовать предварительно удалить пробелы в строке функцией str_replace(), но оказалось, что с подобными числами, полученными, например с csv файла функция str_replace() реально НЕ справляется. сам не могу понять почему.

Разбираемся дальше.  К пробельным символам относятся символы “\n”, “\r”, “\t”, “\v”, “\0” и собственно пробел. Функция str_replace() нам не подходит, поэтому воспользуемся другой функцией – preg_replace() (выполняет поиск и замену по регулярному выражению).

У меня получилась вот такая регулярка:

$str = "1 234";
$str = preg_replace("/[^x\d|*\.]/", "", $str);
var_dump($str);   // 1234
Posted in PHPПомеченные

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *