Как удалить пробелы в строке 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