mb_strpos

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

mb_strposRepère la première occurrence d'un caractère dans une chaîne

Description

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

Repère la position de la première occurrence d'un caractère dans la chaîne fournie.

Effectue une recherche de type strpos(), en tenant compte des caractères multioctets. La position de needle est comptée à partir du début de la chaîne haystack : les positions commencent à 0.

Liste de paramètres

haystack

La chaîne à analyser.

needle

La chaîne de caractères à trouver dans le paramètre haystack. A contrario de la fonction strpos(), les valeurs numériques ne sont pas appliquées comme valeur ordinale d'un caractère.

offset

La position de début de recherche. S'il est omis, zéro sera utilisé. Une position négative compte à partir de la fin de la chaîne de caractères.

encoding

Le paramètre encoding est l'encodage des caractères. S'il est omis ou null, l'encodage de caractères interne sera utilisé.

Valeurs de retour

Retourne la position numérique de la première occurrence du caractère needle dans la chaîne haystack. Si needle est introuvable, mb_strpos() retourne false.

Historique

Version Description
8.0.0 needle accepte désormais une chaîne vide.
8.0.0 encoding est désormais nullable.
7.1.0 Support pour offsets négatifs a été ajouté.

Voir aussi

add a note add a note

User Contributed Notes 3 notes

up
3
stestagg at talk21 dot com
18 years ago
It appears that the $offset value is a character count not a byte count.  (This may seem obvious but it isn't explicitly stated)
up
-3
stestagg at talk21 dot com
18 years ago
a sample mb_str_replace function:

function mb_str_replace($haystack, $search,$replace, $offset=0,$encoding='auto'){
    $len_sch=mb_strlen($search,$encoding);
    $len_rep=mb_strlen($replace,$encoding);
   
    while (($offset=mb_strpos($haystack,$search,$offset,$encoding))!==false){
        $haystack=mb_substr($haystack,0,$offset,$encoding)
            .$replace
            .mb_substr($haystack,$offset+$len_sch,1000,$encoding);
        $offset=$offset+$len_rep;
        if ($offset>mb_strlen($haystack,$encoding))break;
    }
    return $haystack;
}
up
-19
stestagg at talk21 dot com
18 years ago
sorry, my previous post had an error.  replace the 1000 with strlen($haystack) to handle strings longer than 1000 chars.

btw. This is an issue with the mbstring functions.  you can't specify the $encoding without specifying a $length, thus this reduces the functionality of mb_substr compared to substr
To Top