Регулярное выражение PHP - только номер фильтра
Я знаю, что это может звучать как действительно фиктивный вопрос, но я пытаюсь обеспечить, чтобы предоставленная строка имела числовой/десятичный формат, чтобы использовать его позже с функцией PHP number_format().
Как я могу это сделать - скажем, кто-то вводит 15:00 в текстовое поле - какое регулярное выражение и функцию php следует использовать для удаления двоеточия из него и заставить его возвращать только допустимые символы.
preg_match() возвращает массив - поэтому я не могу передать результат в number_format(), если я не буду imode() или что-то вроде этого.
Ваша помощь будет очень оценена.
Ответы
Ответ 1
Использование is_numeric или intval, скорее всего, лучший способ проверить число здесь, но чтобы ответить на ваш вопрос, вы можете вместо этого использовать preg_replace. В этом примере удаляются все нечисловые символы:
$output = preg_replace( '/[^0-9]/', '', $string );
Ответ 2
Чтобы удалить все, что не является числом:
$output = preg_replace('/[^0-9]/', '', $input);
Пояснение:
-
[0-9]
соответствует любому числу от 0 до 9 включительно.
-
^
отменяет шаблон []
.
- Итак,
[^0-9]
соответствует любому, что не является числом, и поскольку мы используем preg_replace
, они будут заменены ничем ''
(второй аргумент preg_replace
).
Ответ 3
Вы можете попробовать следующее:
$string = preg_replace('/[^0-9]/', '', $string);
Приветствия.
Ответ 4
используйте встроенную функцию php is_numeric
, чтобы проверить, является ли значение числовым.
Ответ 5
Вы можете сделать что-то подобное, если хотите только целые числа.
function make_whole($v){
$v = floor($v);
if(is_numeric($v)){
echo (int)$v;
// if you want only positive whole numbers
//echo (int)$v = abs($v);
}
}