(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
grapheme_strpos — Trouve la position du premier graphème
Style procédural
$haystack,$needle,$offset = 0,$locale = ""Trouve la position du premier graphème dans une chaîne.
haystackLa chaîne à étudier. Elle doit être au format UTF-8 valide.
needleLa 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.
Retourne la position sous forme d'entier. Si needle n'est pas trouvé,
grapheme_strpos() retourne false.
| Version | Description |
|---|---|
| 8.5.0 |
Le paramètre optionnel locale a été ajouté.
|
| 7.1.0 |
Ajout du support des offsets négatifs.
|
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
localeest 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)