visual una ultimo regular quitar primer net expresion especiales eliminar como caracteres caracter cadena php string

php - ultimo - Eliminar caracteres no numéricos(excepto puntos y comas) de una cadena



quitar caracteres especiales c# (6)

Si tengo los siguientes valores:

$var1 = AR3,373.31 $var2 = 12.322,11T

¿Cómo puedo crear una nueva variable y configurarla en una copia de los datos que tienen 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



La misma respuesta que middaparka pero quita la ,.

$unformatted_phone = "phone 122-3222223.ext 442"; echo preg_replace("/[^0-9]/", "", $unformatted_phone);


Me sorprende que no haya habido ninguna mención de filter_var aquí por ser una pregunta tan vieja ...

PHP tiene un método integrado para hacer esto usando filtros de desinfección . Específicamente, el que se utilizará en esta situación es FILTER_SANITIZE_NUMBER_FLOAT con el FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND banderas. Al igual que:

$numeric_filtered = filter_var("AR3,373.31", FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND); echo $numeric_filtered; // Will print "3,373.31"

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 regex con las bibliotecas actuales de PHP (aunque literalmente en nanosegundos).


Puede usar preg_replace para intercambiar todos los caracteres no numéricos y la coma y punto / punto final de la siguiente manera:

<?php $testString = "12.322,11T"; echo preg_replace("/[^0-9,.]/", "", $testString); ?>


Si la solicitud es eliminar todo (y no solo uno) un carácter no numérico, tal vez el anterior se escriba así de una manera muy simple (pero podría escribir una función para pasar el hilo y hacer que devuelva el valor necesario sin caracteres .. de todas formas..):

<?php $String1 = ''AR3,373.31''; $String2 = ''12.322,11T''; echo preg_replace(''/[^0-9,.]+/i'', '''', $String1); echo preg_replace(''/[^0-9,.]+/i'', '''', $String2); ?>


Si las letras están siempre al principio o al final, simplemente puede usar trim ... no se necesita regex

$string = trim($string, "a..zA..Z"); // this also take care of lowercase "AR3,373.31" --> "3,373.31" "12.322,11T" --> "12.322,11" "12.322,11" --> "12.322,11"