php8.5
Home/ Manual/ mbstring / functions/ mb_strpos

mb_strpos

PHP function Edit on GitHub ✎

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

Find position of first occurrence of string in a string

Description

mb_strpos(string $haystack, string $needle, int $offset = 0, string|null $encoding = null): int|false

Finds position of the first occurrence of needle in the haystack string.

Performs a multi-byte safe strpos() operation based on number of characters. The first character's position is 0, the second character position is 1, and so on.

Parameters

haystack

The string from which to get the position of the first occurrence of needle.

needle

The string to find in haystack. In contrast with strpos(), numeric values are not applied as the ordinal value of a character.

offset

The search offset in characters. If it is not specified, 0 is used. A negative offset counts from the end of the string.

encoding

Parameter

Return Values

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.

Errors/Exceptions

  • If offset is greater than the length of haystack, a ValueError will be thrown.

Changelog

VersionDescription
7.1.0Support for negative offsets has been added.

Examples

mb_strpos() returns a character offset, not a byte offset

php
<?php
// "🐘" 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 "🐘"
?>

The above example will output:

output
int(3)
int(2)

See Also

Source: reference/mbstring/functions/mb-strpos.xml · from the official PHP manual (php/doc-en)