Updated PHP Windows builds for Brotli security fix

grapheme_strpos

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

grapheme_strpos — Trouve la position du premier graphème

Description

Style procédural

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

Trouve la position du premier graphème dans une chaîne.

Liste de paramètres

haystack

La chaîne à étudier. Elle doit être au format UTF-8 valide.

needle

La chaîne à étudier. Elle doit être au format UTF-8 valide.

offset

Le paramètre offset permet de spécifier la position dans la haystack de début de recherche, exprimée en graphèmes (et non pas en octets ou caractères). Si l'offset est négatif, il est traité par rapport à la fin de la chaîne de caractères. La position retournée est toujours donnée par rapport au début de haystack, quelle que soit la valeur de offset.

locale

La locale à utiliser. La locale affecte la manière dont les groupes de graphèmes sont définis et dont les chaînes sont comparées. Une chaîne vide ou null utilise la locale par défaut.

L'identifiant de locale peut inclure des clés d'extension de locale Unicode pour contrôler le comportement de la collation. En particulier, la clé ks contrôle la force de collation : par exemple, en_US-u-ks-identic active la comparaison de niveau identique, qui distingue les sélecteurs de variation Unicode (comme la présentation emoji par rapport à la présentation textuelle) qui sont sinon traités comme équivalents. Voir Collator::setStrength() pour la correspondance complète entre les valeurs de ks et les niveaux de force de collation.

Valeurs de retour

Retourne la position sous forme d'entier. Si needle n'est pas trouvé, grapheme_strpos() retourne false.

Historique

Version Description
8.5.0 Le paramètre optionnel locale a été ajouté.
7.1.0 Ajout du support des offsets négatifs.

Exemples

Exemple #1 Exemple avec grapheme_strpos()

<?php

$char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) forme normalisée "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) forme normalisée "D"

print grapheme_strpos( $char_a_ring_nfd . $char_a_ring_nfd . $char_o_diaeresis_nfd, $char_o_diaeresis_nfd);

?>

L'exemple ci-dessus va afficher :

2

Exemple #2 Utiliser la clé de locale ks-identic pour distinguer les sélecteurs de variation

Par défaut, les sélecteurs de variation Unicode (U+FE0E texte, U+FE0F emoji) sont ignorés lors de la comparaison. L'utilisation de la clé d'extension de locale ks-identic active la collation de niveau identique, qui les traite comme des caractères distincts.

Note:

Le paramètre locale est disponible à partir de PHP 8.5.0.

<?php

$textStyle  = "\u{263A}\u{FE0E}"; // U+263A + U+FE0E (sélecteur de présentation textuelle)
$emojiStyle = "\u{263A}\u{FE0F}"; // U+263A + U+FE0F (sélecteur de présentation emoji)

// Locale par défaut : les sélecteurs de variation sont ignorés, l'aiguille est donc trouvée à la position 0.
var_dump(grapheme_strpos($textStyle, $emojiStyle));

// Avec ks-identic : les sélecteurs de variation sont significatifs, aucune correspondance n'est donc trouvée.
var_dump(grapheme_strpos($textStyle, $emojiStyle, 0, 'en_US-u-ks-identic'));

?>

L'exemple ci-dessus va afficher :

int(0)
bool(false)

Voir aussi

+add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top