From 428bd3ec79871632ca9e659f3e49aff5d919e132 Mon Sep 17 00:00:00 2001 From: lacatoire Date: Mon, 26 Oct 2026 07:58:39 +0100 Subject: [PATCH] [Sync-En] intl: improve grapheme and Collator documentation --- reference/intl/collator/set-strength.xml | 64 +++++++++++++++++++- reference/intl/grapheme/grapheme-extract.xml | 32 +++++++--- reference/intl/grapheme/grapheme-strlen.xml | 36 ++++++++++- reference/intl/grapheme/grapheme-strpos.xml | 55 ++++++++++++++++- 4 files changed, 174 insertions(+), 13 deletions(-) diff --git a/reference/intl/collator/set-strength.xml b/reference/intl/collator/set-strength.xml index 422fd2e87b..31804d09ac 100644 --- a/reference/intl/collator/set-strength.xml +++ b/reference/intl/collator/set-strength.xml @@ -1,5 +1,5 @@ - + @@ -173,6 +173,67 @@ array ( 1 => 'Ao', 2 => 'ao', ) +]]> + + + + Establecer la fuerza mediante la clave de extensión Unicode de la configuración regional <literal>ks</literal> + + La fuerza de ordenación también puede establecerse al construir el objeto Collator + mediante la clave de extensión Unicode ks en el identificador de la configuración regional. + La correspondencia entre los valores de ks y las constantes de + Collator es la siguiente: + + + + + + Valor de la clave de configuración regional + Constante de Collator + + + + ks-level1Collator::PRIMARY + ks-level2Collator::SECONDARY + ks-level3Collator::TERTIARY + ks-level4Collator::QUATERNARY + ks-identicCollator::IDENTICAL + + + + + Collator::DEFAULT_STRENGTH no tiene ningún equivalente ks-* + y debe establecerse mediante programación con collator_set_strength. + + +compare($textStyle, $emojiStyle) === 0); // bool(true) + +// Fuerza idéntica mediante setStrength(). +$coll1 = new Collator('en_US'); +$coll1->setStrength(Collator::IDENTICAL); +var_dump($coll1->compare($textStyle, $emojiStyle) === 0); // bool(false) + +// Equivalente: fuerza idéntica mediante la clave de extensión ks de la configuración regional. +$coll2 = new Collator('en_US-u-ks-identic'); +var_dump($coll2->compare($textStyle, $emojiStyle) === 0); // bool(false) + +?> +]]> + + &example.outputs; + + @@ -185,6 +246,7 @@ array ( Constantes de Collator collator_get_strength + collator_create diff --git a/reference/intl/grapheme/grapheme-extract.xml b/reference/intl/grapheme/grapheme-extract.xml index a3390b2a18..14ebb76652 100644 --- a/reference/intl/grapheme/grapheme-extract.xml +++ b/reference/intl/grapheme/grapheme-extract.xml @@ -1,6 +1,6 @@ - + @@ -54,13 +54,25 @@ - GRAPHEME_EXTR_COUNT (por defecto): size es el número + GRAPHEME_EXTR_COUNT (por defecto) - size es el número de grupos de grafemas a extraer. - GRAPHEME_EXTR_MAXBYTES: size es el número de bytes a devolver. - GRAPHEME_EXTR_MAXCHARS: size es el número de caracteres + GRAPHEME_EXTR_MAXBYTES - size es el número de bytes a devolver. + GRAPHEME_EXTR_MAXCHARS - size es el número de caracteres UTF-8 a devolver. + + + GRAPHEME_EXTR_COUNT limita el número de grupos de grafemas (unidades + visuales), no el número de bytes. Un único grupo de grafemas puede ocupar muchos bytes: por + ejemplo, un emoji de familia con secuencias ZWJ (👨‍👩‍👧‍👦) es + un solo grupo de grafemas, pero ocupa 25 bytes. Cuando la cadena extraída deba ajustarse a un + presupuesto de bytes, utilice en su lugar GRAPHEME_EXTR_MAXBYTES. + GRAPHEME_EXTR_MAXBYTES siempre devuelve grupos de grafemas completos + dentro del presupuesto de bytes, pero devuelve una cadena vacía si el presupuesto es menor que + el primer grupo de grafemas. + + @@ -151,11 +163,13 @@ o%CC%88 grapheme_substr - - - Unicode Text Segmentation: Grapheme Cluster Boundaries - - + grapheme_strlen + grapheme_strpos + + + Unicode Text Segmentation: Grapheme Cluster Boundaries + + diff --git a/reference/intl/grapheme/grapheme-strlen.xml b/reference/intl/grapheme/grapheme-strlen.xml index 63447b30f4..dd85de0b40 100644 --- a/reference/intl/grapheme/grapheme-strlen.xml +++ b/reference/intl/grapheme/grapheme-strlen.xml @@ -1,6 +1,6 @@ - + @@ -67,6 +67,38 @@ print grapheme_strlen( 'abc' . $char_a_ring_nfd . $char_o_diaeresis_nfd . $char_ 6 ]]> + + Gestión de una entrada UTF-8 no válida + + grapheme_strlen devuelve &null; o &false; en caso de fallo, incluido + cuando la entrada no es UTF-8 válido. + Utilice intl_get_error_code e intl_error_name + para obtener los detalles del error de ICU. + + + +]]> + + &example.outputs; + + + + @@ -81,6 +113,8 @@ print grapheme_strlen( 'abc' . $char_a_ring_nfd . $char_o_diaeresis_nfd . $char_ iconv_strlen mb_strlen strlen + intl_get_error_code + intl_error_name diff --git a/reference/intl/grapheme/grapheme-strpos.xml b/reference/intl/grapheme/grapheme-strpos.xml index d9ad72d858..7ba03fe0ed 100644 --- a/reference/intl/grapheme/grapheme-strpos.xml +++ b/reference/intl/grapheme/grapheme-strpos.xml @@ -1,6 +1,6 @@ - + @@ -60,7 +60,21 @@ locale - &intl.param.grapheme.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. + @@ -121,6 +135,42 @@ print grapheme_strpos( $char_a_ring_nfd . $char_a_ring_nfd . $char_o_diaeresis_n 2 ]]> + + Uso de la clave de configuración regional <literal>ks-identic</literal> 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. + + + + El parámetro locale está disponible desde PHP 8.5.0. + + + + +]]> + + &example.outputs; + + + + @@ -132,6 +182,7 @@ print grapheme_strpos( $char_a_ring_nfd . $char_a_ring_nfd . $char_o_diaeresis_n grapheme_strripos grapheme_strrpos grapheme_strstr + Collator::setStrength Unicode Text Segmentation: Grapheme Cluster Boundaries