PHP 4.0 Bug #7763 Updated: strrpos returns unclear value

From: Date: Sun, 12 Nov 2000 00:06:22 +0000
Subject: PHP 4.0 Bug #7763 Updated: strrpos returns unclear value
Groups: php.dev 
Request: Send a blank email to php-dev+get-37785@lists.php.net to get a copy of this message
ID: 7763 Updated by: torben Reported By: timo@fi-web.de Status: Open Bug Type: Unknown/Other Function Assigned To: Comments: Not a bug. If the found string occurs at the first position in the string, that position will be 0, as you noted. 0 is a false value, so '0 == false' is true. There are various ways around this. One is to use the PHP 4-only 'identical' operator, ===. This tests to make sure that the operands are both equal and of the same type. $haystack = "/test"; $needle = "/"; $position = strrpos($haystack, $needle); if ($position === false) { echo "Not found"; } else { echo "Found at position $position"; } Another is to do something like: $position = strrpost("x$haystack", $needle); ...which would force any found strings to be at least at position 1. Check out the manual pages on Type Juggling and Operators for more information. http://www.php.net/manual/language.types.type-juggling.php http://www.php.net/manual/language.operators.comparison.php Previous Comments: --------------------------------------------------------------------------- [2000-11-11 18:49:46] timo@fi-web.de The following code doesn't work as expected: $haystack = "/test"; $needle = "/"; $position = strrpos($haystack, $needle); if ($position == false) { echo "Couldn't find $needle"; } It seems that strrpos returns false, even if the position of the needle was 0 (It is the first position in the string, isn't it?). strrpos should return 0 if the needle was found in haystack at position 0 and FALSE if the needle wasn't found. Additionally, strrpos also returns 0 if the needle wasn't found in haystack. Maybe FALSE and 0 are defined as the same in that context? IMHO, 0 and FALSE should be defined different, or strrpos should NOT return a value (like unset) if the needle wasn't found in haystack. Regards Timo --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=7763

« previous php.dev (#37785) next »