grapheme_strpos

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

grapheme_strpos — Encuentra la posición del primer grafema

Descripción

Estilo procedimental

function grapheme_strpos(
    string $haystack,
    string $needle,
    int $offset = 0,
    string $locale = ""
): int|false

Encuentra la posición del primer grafema en una cadena.

Parámetros

haystack

La cadena a estudiar. Debe estar en formato UTF-8 válido.

needle

La 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.

Valores devueltos

Devuelve la posición en forma de entero. Si needle no es encontrado, grapheme_strpos() devuelve false.

Historial de cambios

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.

Ejemplos

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 locale está 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)

Véase también

+add a note

User Contributed Notes

There are no user contributed notes for this page.