[php] PHP - remove all non-numeric characters from a string

What is the best way for me to do this? Should I use regex or is there another in-built PHP function I can use?

For example, I'd want: 12 months to become 12. Every 6 months to become 6, 1M to become 1, etc.

Thank you

This question is related to php string

The answer is


You can use preg_replace in this case;

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

$res return 6 in this case.

If want also to include decimal separator or thousand separator check this example:

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

$res returns "123.099" in this case

Include period as decimal separator or thousand separator: "/[^0-9.]/"

Include coma as decimal separator or thousand separator: "/[^0-9,]/"

Include period and coma as decimal separator and thousand separator: "/[^0-9,.]/"


Use \D to match non-digit characters.

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