Si tengo los siguientes valores:
$var1 = AR3,373.31
$var2 = 12.322,11T
¿Cómo puedo crear una nueva variable y establecerla en una copia de los datos que tengan caracteres no numéricos eliminados, con la excepción de comas y puntos? Los valores anteriores devolverían los siguientes resultados:
$var1_copy = 3,373.31
$var2_copy = 12.322,11
Me sorprende no ha habido ninguna mención de filter_var aquí de esto es una vieja cuestión, tales ...
PHP tiene un método incorporado para hacer esto usando filtros de desinfección . Específicamente, el que se debe usar en esta situación es
FILTER_SANITIZE_NUMBER_FLOAT
con lasFILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND
banderas. Al igual que:También podría valer la pena tener en cuenta que debido a que está integrado en PHP, es un poco más rápido que usar expresiones regulares con las bibliotecas actuales de PHP (aunque literalmente en nanosegundos).
fuente
La forma más simple de eliminar verdaderamente todos los caracteres no numéricos:
\D
representa "cualquier carácter que no sea un dígito decimal"http://php.net/manual/en/regexp.reference.escape.php
fuente
Puede usar
filter_var
para eliminar todos los caracteres ilegales, excepto los dígitos, el punto y la coma.FILTER_SANITIZE_NUMBER_FLOAT
filtro se utiliza para eliminar todos los caracteres no numéricos de la cadena.FILTER_FLAG_ALLOW_FRACTION
está permitiendo separador de fracciones" . "
FILTER_FLAG_ALLOW_THOUSAND
obtener una coma de la cadena.Código
Salida
Para leer más sobre los filtros filter_var () y Sanitize
fuente
Si la solicitud es eliminar todo (y no solo uno) caracteres no numéricos, tal vez el anterior se pueda escribir de esta manera de una manera muy simple (pero podría escribir una función para pasar la cadena y hacer que devuelva el valor necesario sin caracteres) .. de todas formas..):
fuente
Si las letras siempre están al principio o al final, simplemente puede usar recortar ... no se necesita expresión regular
fuente
Misma respuesta que middaparka pero elimine el
,.
fuente