Bug #60541 [PATCH]: FILTER_SANITIZE_NUMBER_INT fails to filter strings with plus and minus

From: Date: Fri, 16 Dec 2011 00:07:42 +0000
Subject: Bug #60541 [PATCH]: FILTER_SANITIZE_NUMBER_INT fails to filter strings with plus and minus
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-165897@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=60541&edit=1 ID: 60541 Patch added by: klaussilveira@php.net Reported by: klaussilveira@php.net Summary: FILTER_SANITIZE_NUMBER_INT fails to filter strings with plus and minus Status: Open Type: Bug Package: Filter related Operating System: UNIX PHP Version: 5.3.8 Block user comment: N Private report: N New Comment: The following patch has been added/updated: Patch Name: sanitize_integers Revision: 1323994062 URL: https://bugs.php.net/patch-display.php?bug=60541&patch=sanitize_integers&revision=1323994062 Previous Comments: ------------------------------------------------------------------------ [2011-12-16 00:07:20] klaussilveira@php.net Description: ------------ The filter_var FILTER_SANITIZE_NUMBER_INT filter fails to sanitize plus and minus signs in a string. This is the expected behavior, since + and - are accepted in an integer. However, the filter fails to recognize multiple + and -, returning an string instead of an integer. For example: filter_var("I'm+captain4", FILTER_SANITIZE_NUMBER_INT; // returns +4, OK! filter_var("I'm++captain4", FILTER_SANITIZE_NUMBER_INT; // returns ++4, FAILURE! I wrote a small patch that makes the filter ignore + and - signs, which, i believe, it's the best behavior for this. Test script: --------------- <?php // Normal behavior $a = filter_var("I'm+captainSp4rrow!", FILTER_SANITIZE_NUMBER_INT); $b = filter_var("I'm+captain4", FILTER_SANITIZE_NUMBER_INT); echo "$a and $b" . PHP_EOL; echo $a + $b . PHP_EOL; // Problems comes in when we have multiple minus or plus signs in the string $a = filter_var("I'm++captainSp4rrow!", FILTER_SANITIZE_NUMBER_INT); $b = filter_var("I'm++captain4", FILTER_SANITIZE_NUMBER_INT); echo "$a and $b" . PHP_EOL; echo $a + $b . PHP_EOL; Expected result: ---------------- 4 and 4 8 4 and 4 8 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=60541&edit=1

« previous php.bugs (#165897) next »