To find out index offset where a string of text occurs within another string, use strpos().
This function takes two parameters as strstr():
If the text is found, strpos() returns the index of the first character of the text within the string.
If it's not found, strpos() returns false:
<?php $myString = "Hello, world!"; echo strpos( $myString, "wor" ); // Displays '7' echo strpos( $myString, "xyz" ); // Displays '(false) ?>/*w w w . j a v a 2s . c o m*/
When the searched text occurs at the start of the string, strpos() returns 0.
It's easy to mistake this for a return value of false if you're not careful.
For example, the following code will incorrectly display "Not found" :
<?php $myString = "Hello, world!"; if ( !strpos( $myString, "Hel" ) ) echo "Not found"; ?>//from w w w . ja v a2 s . c om
To test explicitly for a false return value, if that's what you're checking for.
The following code works correctly:
<?php $myString = "Hello, world!"; if ( strpos( $myString, "Hel" ) === false ) echo "Not found"; ?>/* w ww. j a v a 2 s . co m*/
strpos() can take an optional third argument: an index position within the string to start the search.
Here's an example:
<?php $myString = "Hello, world!"; echo strpos( $myString, "o" ) . " \n "; // Displays '4' echo strpos( $myString, "o", 5 ) . " \n "; // Displays '8' ?>/* w ww . j a v a2s.co m*/
You can use the third argument to find all occurrences of the search text within the string:
<?php $myString = "Hello, world!"; $pos = 0;// w w w.j a va 2 s . c o m while ( ( $pos = strpos( $myString, "l", $pos ) ) !== false ) { echo "The letter'l'was found at position: $pos \n "; $pos++; } ?>
strpos() has a sister function, strrpos() , that does basically the same thing; the only difference is that strrpos() finds the last match in the string, rather than the first:
<?php $myString = "Hello, world!"; echo strpos( $myString, "o" ) . " \n "; // Displays'4' echo strrpos( $myString, "o" ) . " \n "; // Displays'8' ?>/*from w w w . j a va 2 s. c o m*/
With strpos() , you can pass an optional third argument indicating the index position from which to start the search.
If this index position is negative, strrpos() starts that many characters from the end of the string.