(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
grapheme_strpos — Encuentra la posición del primer grafema
Estilo procedimental
$haystack,$needle,$offset = 0,$locale = ""Encuentra la posición del primer grafema en una cadena.
haystackLa cadena a estudiar. Debe estar en formato UTF-8 válido.
needleLa cadena a estudiar. Debe estar en formato UTF-8 válido.
offset
El parámetro offset permite especificar la posición en la haystack
donde comienza la búsqueda, expresada en grafemas (y no en bytes o caracteres).
Si el offset es negativo, se trata con respecto al final de
la cadena de caracteres.
La posición devuelta siempre se da con respecto al inicio de
haystack, independientemente del valor de offset.
locale
Configuración regional a utilizar. La configuración regional afecta a cómo se definen los
grupos de grafemas y a cómo se comparan las cadenas. Una cadena vacía o null utiliza la
configuración regional por defecto.
El identificador de la configuración regional puede incluir claves de extensión Unicode de
la configuración regional para controlar el comportamiento de la ordenación. En particular,
la clave ks controla la fuerza de ordenación: por ejemplo,
en_US-u-ks-identic activa la comparación de nivel idéntico, que distingue
los selectores de variación Unicode (como la presentación como emoji frente a la presentación
como texto) que de otro modo se tratan como equivalentes.
Consulte Collator::setStrength() para ver la correspondencia completa
entre los valores de ks y los niveles de fuerza de ordenación.
Devuelve la posición en forma de entero. Si needle no es encontrado,
grapheme_strpos() devuelve false.
| Versión | Descripción |
|---|---|
| 8.5.0 |
Se ha añadido el parámetro opcional locale.
|
| 7.1.0 |
Se añade el soporte para offsets negativos.
|
Ejemplo #1 Ejemplo con grapheme_strpos()
<?php
$char_a_ring_nfd = "a\xCC\x8A"; // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) forma normalizada "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) forma normalizada "D"
print grapheme_strpos( $char_a_ring_nfd . $char_a_ring_nfd . $char_o_diaeresis_nfd, $char_o_diaeresis_nfd);
?>El ejemplo anterior mostrará:
2
Ejemplo #2 Uso de la clave de configuración regional ks-identic para distinguir los selectores de variación
Por defecto, los selectores de variación Unicode (U+FE0E texto, U+FE0F emoji) se ignoran
durante la comparación. El uso de la clave de extensión de configuración regional ks-identic
activa la ordenación de nivel idéntico, que los trata como caracteres distintos.
Nota:
El parámetro
localeestá disponible desde PHP 8.5.0.
<?php
$textStyle = "\u{263A}\u{FE0E}"; // U+263A + U+FE0E (selector de presentación como texto)
$emojiStyle = "\u{263A}\u{FE0F}"; // U+263A + U+FE0F (selector de presentación como emoji)
// Configuración regional por defecto: los selectores de variación se ignoran, por lo que la aguja se encuentra en la posición 0.
var_dump(grapheme_strpos($textStyle, $emojiStyle));
// Con ks-identic: los selectores de variación son significativos, por lo que no hay coincidencia.
var_dump(grapheme_strpos($textStyle, $emojiStyle, 0, 'en_US-u-ks-identic'));
?>El ejemplo anterior mostrará:
int(0) bool(false)