Если у меня есть следующие значения:
$var1 = AR3,373.31
$var2 = 12.322,11T
Как я могу создать новую переменную и установить для нее копию данных, в которой удалены все нечисловые символы, за исключением запятых и точек? Приведенные выше значения будут возвращать следующие результаты:
$var1_copy = 3,373.31
$var2_copy = 12.322,11
Я удивлен, что здесь не упоминается filter_var, потому что это такой старый вопрос ...
В PHP есть встроенный метод для этого с использованием фильтров очистки . В частности, в этой ситуации следует
FILTER_SANITIZE_NUMBER_FLOAT
использоватьFILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND
флаги. Вот так:Также стоит отметить, что, поскольку он встроен в PHP, он немного быстрее, чем использование регулярных выражений с текущими библиотеками PHP (хотя буквально в наносекундах).
источник
Самый простой способ действительно удалить все нечисловые символы:
\D
представляет «любой символ, который не является десятичной цифрой»http://php.net/manual/en/regexp.reference.escape.php
источник
Вы можете использовать,
filter_var
чтобы удалить все недопустимые символы, кроме цифр, точек и запятой.FILTER_SANITIZE_NUMBER_FLOAT
Фильтр используется для удаления всех нечисловой символ из строки.FILTER_FLAG_ALLOW_FRACTION
разрешает сепаратор фракции" . "
FILTER_FLAG_ALLOW_THOUSAND
получить запятую из строки.Код
Вывод
Чтобы узнать больше о фильтрах filter_var () и Sanitize
источник
Если запрос состоит в том, чтобы удалить все (и не только один) нечисловой символ, возможно, предыдущий может быть написан так очень просто (но вы могли бы написать функцию для передачи строки и заставить ее возвращать необходимое значение без символов) .. тем не мение..):
источник
Если буквы всегда в начале или в конце, вы можете просто использовать обрезку ... не требуется регулярное выражение
источник
Тот же ответ, что и у миддапарка, но удалите
,.
источник