(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_strpos — Busca la posición de la primera ocurrencia de un string en otro string
$haystack,$needle,$offset = 0,$encoding = null
Localiza la posición de la primera ocurrencia de needle en el string haystack.
Realiza una búsqueda de tipo
strpos(), teniendo en cuenta los caracteres
multioctetos. La posición de needle se cuenta
desde el inicio de la cadena haystack: las
posiciones comienzan en 0.
haystack
El string a partir del cual se obtiene la posición de la primera aparición
de needle.
needle
La string a encontrar en el parámetro
haystack. A diferencia de la
función strpos(), los valores numéricos
no se aplican como valor ordinal de un carácter.
offsetLa posición de inicio de la búsqueda, en caracteres. Si se omite, se utilizará cero. Una posición negativa se cuenta desde el final de la string.
encodingEl parámetro encoding
es la codificación de caracteres. Si se omite o es null, se utilizará el valor
de la codificación de caracteres interna.
Devuelve la posición en caracteres (no en bytes) de la primera ocurrencia
de needle en el string
haystack, contando desde 0.
Devuelve false si no se encuentra needle.
Si offset es mayor que la longitud de
haystack, se lanzará un
ValueError.
A partir de PHP 8.0.0, se lanza una ValueError si
encoding es una codificación no válida.
Antes de PHP 8.0.0, se emitía una advertencia E_WARNING en su lugar.
| Versión | Descripción |
|---|---|
| 8.0.0 |
needle ahora acepta una cadena vacía.
|
| 8.0.0 |
encoding ahora acepta null.
|
| 8.0.0 |
Ahora lanza una ValueError si
encoding es una codificación no válida.
Anteriormente, se emitía una advertencia E_WARNING
y se devolvía false.
|
| 7.1.0 |
Se añadió soporte para offsets negativos.
|
Ejemplo #1 mb_strpos() devuelve una posición en caracteres, no en bytes
<?php
// "🐘" ocupa 4 bytes pero es 1 carácter; "é" ocupa 2 bytes pero es 1 carácter
$str = "🐘H🐘é";
var_dump(mb_strpos($str, "é")); // carácter 3, no byte 9
var_dump(mb_strpos($str, "🐘", 1)); // carácter 2, se omite el primer "🐘"
?>El ejemplo anterior mostrará:
int(3) int(2)