Propriétés des caractères Unicode
Depuis PHP 5.1.0, trois nouvelles séquences d'échappement pour trouver des types de caractères sont disponibles lorsque le mode UTF-8 est sélectionné. Elles sont :
- \p{xx}
- un caractère avec les propriétés xx
- \P{xx}
- un caractère sans les propriétés xx
- \X
- une séquence étendue Unicode
Les noms des propriétés représentés par xx ci-dessus sont limités aux catégories de propriétés générales Unicode. Chaque caractère a exactement une seule de ces propriétés, spécifié par une abréviation sur deux caractères. Pour des raisons de compatibilité avec Perl, la négation peut être spécifiée en incluant un accent circonflexe entre l'accolade ouvrante et le nom de la propriété. Par exemple, \p{^Lu} équivaut à la même chose que \P{Lu}.
Si une seule lettre est spécifiée avec \p ou \P, il inclut toutes les propriétés qui commencent par cette lettre. Dans ce cas, en l'absence de négation, les accolades dans la séquence d'échappement sont optionnelles ; ceci revient à la même chose :
\p{L} \pL
Propriétés | Correspondance | Notes |
---|---|---|
C | Autre | |
Cc | Contrôle | |
Cf | Format | |
Cn | Non affecté | |
Co | Utilisation privée | |
Cs | Substitut | |
L | Lettre | Inclut les propriétés suivantes : Ll, Lm, Lo, Lt et Lu. |
Ll | Lettre en minuscule | |
Lm | Lettre de modification | |
Lo | Autres lettres | |
Lt | Lettre titrée | |
Lu | Lettre en majuscule | |
M | Marque | |
Mc | Marque d'espacement | |
Me | Marque d'enfermement | |
Mn | Marque non espacée | |
N | Nombre | |
Nd | Nombre décimal | |
Nl | Nombre Lettre | |
No | Autres nombres | |
P | Ponctuation | |
Pc | Ponctuation de connecteur | |
Pd | Tiret de ponctuation | |
Pe | Ponctuation de fermeture | |
Pf | Ponctuation finale | |
Pi | Ponctuation initiale | |
Po | Autres ponctuations | |
Ps | Ponctuation ouvrante | |
S | Symbole | |
Sc | Symbole monétaire | |
Sk | Symbole de modification | |
Sm | Symbole mathématique | |
So | Autres symboles | |
Z | Séparateur | |
Zl | Séparateur de ligne | |
Zp | Séparateur de paragraphe | |
Zs | Séparateur d'espace |
Les propriétés étendues comme InMusicalSymbols ne sont pas supportées par PCRE.
La sensibilité à la casse de la recherche n'affecte pas les séquences d'échappement. Par exemple, \p{Lu} cherche toujours et uniquement les lettres en majuscules
Les jeux de caractères unicodes sont définis comme appartenant à certains scripts. Un caractère d'un de ces jeux peut être trouvé en utilisant un nom de script. Par exemple :
- \p{Greek}
- \P{Han}
Ceux qui ne font pas partis d'un script identifié sont regroupés dans Common. Voici la liste courante des scripts :
Arabic | Armenian | Avestan | Balinese | Bamum | |
Batak | Bengali | Bopomofo | Brahmi | Braille | |
Buginese | Buhid | Canadian_Aboriginal | Carian | Chakma | |
Cham | Cherokee | Common | Coptic | Cuneiform | |
Cypriot | Cyrillic | Deseret | Devanagari | Egyptian_Hieroglyphs | |
Ethiopic | Georgian | Glagolitic | Gothic | Greek | |
Gujarati | Gurmukhi | Han | Hangul | Hanunoo | |
Hebrew | Hiragana | Imperial_Aramaic | Inherited | Inscriptional_Pahlavi | |
Inscriptional_Parthian | Javanese | Kaithi | Kannada | Katakana | |
Kayah_Li | Kharoshthi | Khmer | Lao | Latin | |
Lepcha | Limbu | Linear_B | Lisu | Lycian | |
Lydian | Malayalam | Mandaic | Meetei_Mayek | Meroitic_Cursive | |
Meroitic_Hieroglyphs | Miao | Mongolian | Myanmar | New_Tai_Lue | |
Nko | Ogham | Old_Italic | Old_Persian | Old_South_Arabian | |
Old_Turkic | Ol_Chiki | Oriya | Osmanya | Phags_Pa | |
Phoenician | Rejang | Runic | Samaritan | Saurashtra | |
Sharada | Shavian | Sinhala | Sora_Sompeng | Sundanese | |
Syloti_Nagri | Syriac | Tagalog | Tagbanwa | Tai_Le | |
Tai_Tham | Tai_Viet | Takri | Tamil | Telugu | |
Thaana | Thai | Tibetan | Tifinagh | Ugaritic | |
Vai | Yi |
La séquence \X cherche n'importe quel groupe de graphème Unicode étendu. Un groupe de graphème est une chaîne composée d'un ou plusieurs caractères Unicode qui se combinent pour former un seul glyphe. Dans les faits, cela revient à utiliser le caractère . sachant qu'il va matcher un caractère composé, peu importe le nombre de caractères individuel nécessaire à l'afficher.
Dans les versions PCRE inférieures à 8.32 (ce qui correspond aux versions de PHP antérieures à la version 5.4.14 lorsque la bibliothèque interne est utilisée), \X était équivalent à (?>\PM\pM*). Aussi, il matchait un caractère sans propriété "mark", suivi par aucun ou plusieurs caractères possédant la propriété "mark", et traitait la séquence comme un groupe atomique (voir ci-dessous). Les caractères avec la propriété "mark" sont typiquement les lettres accentuées qui affectent le caractère qui la précède.
La recherche de caractères par les propriétés Unicode n'est pas la méthode la plus rapide, car PCRE doit chercher une structure qui contient les données dans plus de quinze mille caractères. C'est pour cela que les séquences traditionnelles comme \d et \w n'utilisent pas les propriétés Unicode dans PCRE.
Version en cache
22/11/2024 01:50:15 Cette version de la page est en cache (à la date du 22/11/2024 01:50:15) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-regexp.reference.unicode.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.