mb_strpos()
mb_strpos() — Find position of first occurrence of string in a string.
Built-in function of PHP 8.5. The manual lists it as available in PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8. This page is the reference card: signature, parameters and return value, plus the changelog and the example the manual provides.
Signature
mb_strpos(string $haystack, string $needle, int $offset = 0, ?string $encoding = null): int|false
Parameters
| Parameter | Type | What it takes |
|---|---|---|
| $haystack | string | The string from which to get the position of the first occurrence of needle. |
| $needle | string | The string to find in haystack. In contrast with strpos(), numeric values are not applied as the ordinal value of a character. |
| $offset | int | The search offset in characters. If it is not specified, 0 is used. A negative offset counts from the end of the string. |
| $encoding | ?string | The encoding parameter is the character encoding. If it is omitted or null, the internal character encoding value will be used. |
Return value
Returns the character position (not byte position) of the first occurrence of needle in the haystack string, counting from 0. Returns false if needle is not found.
Example
A runnable snippet:
// "🐘" is 4 bytes but 1 character; "é" is 2 bytes but 1 character $str = "🐘H🐘é"; var_dump(mb_strpos($str, "é")); // character 3, not byte 9 var_dump(mb_strpos($str, "🐘", 1)); // character 2, skipping the first "🐘"
Output:
int(3) int(2)
Changelog
| Version | Change |
|---|---|
| 8.0.0 | needle now accepts an empty string. |
| 8.0.0 | encoding is nullable now. |
| 8.0.0 | Now throws a ValueError if encoding is an invalid encoding. Previously, an E_WARNING was emitted and false was returned. |
| 7.1.0 | Support for negative offsets has been added. |
See also
mb_strrpos(), mb_stripos(), mb_internal_encoding(), strpos()
All PHP 8.5 built-in functions
Reference card built from the PHP manual page mb_strpos() (PHP documentation, CC BY 3.0). The page is generated from the manual, so the wording of the parameter and return value text follows php.net.