The strpos()
function, and its case-insensitive sibling, stripos(), searches
for a substring, find the position of the first occurrence of a substring in a string.
PHP strpos() Function has the following syntax.
int strpos ( string haystack, mixed needle [, int offset] )
PHP strpos() Function returns the position of where the needle exists relative to the beginning of the haystack string.
PHP strpos() Function returns FALSE if the needle was not found.
String positions start at 0, and not 1.
This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Use the === operator for testing the return value of this function.
What will strrpos() return in case of not found
<?PHP $myString = "Hello, world!"; echo strpos( $myString, "wor" ); // Displays '7' echo "\n"; echo strpos( $myString, "xyz" ); // Displays '' (false) ?>
The code above generates the following result.
<?PHP $string = "This is a test from java2s.xom"; print strpos($string, "s") . "\n"; ?>
PHP considers the first letter of a string to be index 0.
You can specify whole words in the second parameter. For example,
<?PHP $string = "This is a test from java2s.xom"; print strpos($string, "test") ; ?>
If the substring sent in parameter two is not found,
strpos()
will return false as opposed to -1
.
This is very important, as shown in this script:
<?PHP $string = "This is a strpos() test"; $pos = strpos($string, "This"); if ($pos == false) { print "Not found\n"; } else { print "Found!\n"; } ?>
That will output "Not found".
In the code above strpos()
returns 0.
However, PHP considers 0 to be the same value as false.
If we change if statement to use ===
rather than ==
, PHP will check the value of 0
and false and find they match (both false), then check the types of 0 and false, and
find that they do not match-the former is an integer, and the latter is a boolean.
So, the corrected version of the script is this:
<?PHP $string = "This is a strpos() test"; $pos = strpos($string, "This"); if ($pos === false) { print "Not found\n"; } else { print "Found!\n"; } ?>
The third parameter to strpos() sets where to start searching from. For example:
<?PHP $string = "This is a strpos() test"; $pos = strpos($string, "i", 3); if ($pos === false) { print "Not found\n"; } else { print "Found at $pos!\n"; } ?>