Функция PHP filter_var(), допускающая более одного минуса в целых числах

Я пытаюсь отфильтровать целые числа, используя filter_var(), но в этот случай:

echo filter_var('-3-6-5', FILTER_SANITIZE_NUMBER_INT); // Output: -3-6-5

Вместо -3-6-5 я ожидаю получить -365.

Кто-то знает, как решить это или регулярное выражение, которое это делает?

Спасибо за любую помощь!


person Marcio Mazzucato    schedule 28.04.2013    source источник
comment
Почему вы этого ожидаете? Немного контекста не помешало бы...   -  person elclanrs    schedule 29.04.2013
comment
@elclanrs, я пытаюсь очистить некоторые переменные, а затем проверить их.   -  person Marcio Mazzucato    schedule 29.04.2013
comment
@Marcio Simao: -3-6-5 не проходит проверку. Вы должны показать пользователю сообщение об ошибке, а не пытаться угадать, что они имели в виду.   -  person zerkms    schedule 29.04.2013
comment
функция работает КАК ОПРЕДЕЛЕНО: удаляет все символы, кроме цифр, знаков плюс и минус. например фильтрация -3-6+5a также даст вам -3-6+5. Он не претендует на то, чтобы дать вам ДЕЙСТВИТЕЛЬНЫЙ номер, просто что-то, что МОЖЕТ быть действительным числом.   -  person Marc B    schedule 29.04.2013


Ответы (1)


echo preg_replace('~^[^-\d]|(?<!^)\D~', '', '-3-6-5'); // -365

Он удалит все, что не является цифрой, сохраняя знак - в начале строки.

person zerkms    schedule 28.04.2013