PHP 4.0 Bug #7763 Updated: strrpos returns unclear value
| From: | torben@php.net | 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