PHP: elimine todos los caracteres no numéricos de una cadena [duplicate]

2 minutos de lectura

avatar de usuario
b85411

¿Cuál es la mejor manera para mí de hacer esto? ¿Debo usar expresiones regulares o hay otra función PHP incorporada que pueda usar?

Por ejemplo, me gustaría: 12 months convertirse 12. Every 6 months convertirse 6, 1M convertirse 1etc.

  • @mickmackusa ¿Por qué no eliminar un número de teléfono de sus paréntesis, espacios y guiones en PHP? No creo que esta pregunta deba eliminarse por cierto.

    – Wiktor Stribiżew

    27 de diciembre de 2021 a las 1:09


avatar de usuario
pguetschow

Puedes usar preg_replace en este caso;

$res = preg_replace("/[^0-9]/", "", "Every 6 Months" );

$res devuelve 6 en este caso.

Si también desea incluir un separador decimal o un separador de miles, consulte este ejemplo:

$res = preg_replace("/[^0-9.]/", "", "$ 123.099");

$res devuelve “123.099” en este caso

Incluir punto como separador decimal o separador de miles: “/[^0-9.]/”

Incluir coma como separador decimal o separador de miles: “/[^0-9,]/”

Incluir punto y coma como separador decimal y separador de miles: “/[^0-9,.]/”

  • Gracias. Por interés, ¿es posible explotar también una cadena con múltiples delimitadores? Así que básicamente permite explode() para trabajar en una coma, un punto y coma, dos puntos, etc.?

    – b85411

    30 de noviembre de 2015 a las 8:15

  • mmm, echa un vistazo aquí: stackoverflow.com/questions/4955433/…

    – pguetschow

    30 de noviembre de 2015 a las 9:06

  • La respuesta proporcionada permite que la cadena mantenga comas y puntos. La pregunta pide eliminar todos los caracteres no numéricos. Es una edición menor (no califica para la edición ya que solo tiene 2 caracteres), pero la respuesta para eliminar todo lo no numérico debería ser $res = preg_replace("/[^0-9]/", "", "Every 6 Months" );

    – Jon

    12 de junio de 2017 a las 3:50

  • Los números negativos * existen *, entonces $res = preg_replace(“/[^0-9.-]/”, “”, “$ -123.099”);

    – Hernán Eche

    3 de diciembre de 2021 a las 12:59

Usar \D para hacer coincidir caracteres que no sean dígitos.

preg_replace('~\D~', '', $str);

  • Elimina los períodos también. Que podría ser lo que algunos están buscando.

    – jake

    5 mayo 2017 a las 18:54

  • Y elimina espacios/nuevas líneas, que es exactamente lo que algunos buscan 🙂

    – Doncella árabe

    13 abr 2019 a las 19:25

  • También lo más sencillo, que es lo que busco.

    usuario7914556

    5 mayo 2021 a las 22:14

¿Ha sido útil esta solución?