Попробуйте это:
$clean = preg_replace('/[^\\d.]+/', '', $str);
Но вы также можете использовать [^0-9.]
, если вы более знакомы с этим. Обратите внимание, что .
не нужно экранировать внутри объявления символьного класса, поскольку он не является специальным символом внутри (только ]
, \
и, в зависимости от контекста, также ^
и -
).