Владислав Лысков, первый вариант кода сделал из 1 000 грн. просто 1, тут теперь не совсем то, что нужно выходит... он корректно работает с числами до 999
Владислав Лысков, price я вардампом вывел что бы было понятно что внутри, через echo я вывел $newValue чуть выше в конце строки, результат что вывело эхо можно увидеть на первой строке, вардамом прайс ниже
Владислав Лысков, да, я в курсе, когда руками прописать у меня тоже работает, когда из переменной нет, для этого и делал вардампом вывод, что бы было понятно что внутри
Сергей delphinpro, человек и пробелы в значении, после округления не указывал. У него задача плавающая, а он не предугадывает возможные варианты.
Ну типа '1 408,99 грн.' уже не будет 1408.99 а будет 140899. И это очень серьезный баг.
все таки, я думаю решение будет ближе к тому, чтобы
1) срезать буквы, через str_replace "грн. "
возможно там проблемы с кодировкой, и ему тупо не попадаются буквы.
Ну и лучше сразу заменить на массив вариантов
[
'грн', 'руб.'
]
можно будет просто по факту добавлять новую замену.
2) удалить реплэйсом пробелы
3) заменить точку на запятую
4) сконвертировать в число
Denys, так что не пока сойдет, а надо делать сразу исходя из возможных проблем и условий задачи. Каждый минипропуск - в будущем к таким проблемам приведет.
intVal или floatVal автоматически преобразуют число в начале строки, проигнорировав все остальные символы а так же отсутствие числа в принципе (вернет 0).