charsets.php
SPIP, Système de publication pour l'internet
Copyright © avec tendresse depuis 2001 Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James
Ce programme est un logiciel libre distribué sous licence GNU/GPL.
Table of Contents
Functions
- init_charset() : void
- Initialisation
- load_charset() : string|bool
- Charge en mémoire la liste des caractères d'un charset
- init_mb_string() : bool
- Vérifier qu'on peut utiliser mb_string avec notre charset
- test_iconv() : bool
- Test le fonctionnement correct d'iconv
- corriger_caracteres_windows() : string|array<string|int, mixed>
- Corriger des caractères non-conformes : 128-159
- html2unicode() : string
- Transforme les entités HTML en unicode
- unicode2charset() : string
- Transforme les entites unicode  dans le charset specifie
- importer_charset() : string
- Importer un texte depuis un charset externe vers le charset du site
- utf_8_to_unicode() : string
- Transforme un texte UTF-8 en unicode
- utf_32_to_unicode() : string
- Transforme un texte UTF-32 en unicode
- caractere_utf_8() : string
- Transforme un numéro unicode en caractère utf-8
- unicode_to_utf_8() : string
- Convertit un texte unicode en utf-8
- unicode_to_javascript() : string
- Convertit les unicode Ĉ en javascript \u0108
- javascript_to_unicode() : string
- Convertit les %uxxxx (envoyés par javascript) en &#yyy unicode
- javascript_to_binary() : string
- Convertit les %E9 (envoyés par le browser) en chaîne du charset du site (binaire)
- translitteration_rapide() : string
- Substition rapide de chaque graphème selon le charset sélectionné.
- translitteration() : string
- Translittération charset => ascii (pour l'indexation)
- translitteration_complexe() : string
- Translittération complexe
- translitteration_chiffree() : string
- Translittération chiffrée
- bom_utf8() : bool
- Reconnaitre le BOM utf-8 (0xEFBBBF)
- is_utf8() : bool
- Vérifie qu'une chaîne est en utf-8 valide
- is_ascii() : bool
- Vérifie qu'une chaîne est en ascii valide
- transcoder_page() : string
- Transcode une page vers le charset du site
- spip_substr() : string
- Coupe un texte selon substr()
- spip_ucfirst() : string
- Rend majuscule le premier caractère d'une chaîne utf-8
- spip_strtolower() : string
- Passe une chaîne utf-8 en minuscules
- spip_strlen() : int
- Retourne la longueur d'une chaîne utf-8
- utf8_noplanes() : string
- Transforme une chaîne utf-8 en utf-8 sans "planes" ce qui permet de la donner à MySQL "utf8", qui n'est pas un utf-8 complet L'alternative serait d'utiliser utf8mb4
Functions
init_charset()
Initialisation
    
                    init_charset() : void
    
    
    
    
load_charset()
Charge en mémoire la liste des caractères d'un charset
    
                    load_charset([string $charset = 'AUTO' ]) : string|bool
        Charsets supportés en natif : voir les tables dans ecrire/charsets/ Les autres charsets sont supportés via mbstring()
Parameters
- $charset : string = 'AUTO'
- 
                    Charset à charger. Par défaut (AUTO), utilise le charset du site 
Return values
string|bool —- Nom du charset
- false si le charset n'est pas décrit dans le répertoire charsets/
init_mb_string()
Vérifier qu'on peut utiliser mb_string avec notre charset
    
                    init_mb_string() : bool
        Les fonctions mb_* sont tout le temps présentes avec symfony/polyfill-mbstring
Return values
bool —true si notre charset est utilisable par mb_strsing
test_iconv()
Test le fonctionnement correct d'iconv
    
                    test_iconv() : bool
        Celui-ci coupe sur certaines versions la chaine quand un caractère n'appartient pas au charset
Tags
Return values
bool —true si iconv fonctionne correctement
corriger_caracteres_windows()
Corriger des caractères non-conformes : 128-159
    
                    corriger_caracteres_windows(string|array<string|int, mixed> $texte[, string $charset = 'AUTO' ][, string $charset_cible = 'unicode' ]) : string|array<string|int, mixed>
        Cf. charsets/iso-8859-1.php (qu'on recopie ici pour aller plus vite) On peut passer un charset cible en parametre pour accelerer le passage iso-8859-1 -> autre charset
Parameters
- $texte : string|array<string|int, mixed>
- 
                    Le texte à corriger 
- $charset : string = 'AUTO'
- 
                    Charset d'origine du texte Par défaut (AUTO) utilise le charset du site 
- $charset_cible : string = 'unicode'
- 
                    Charset de destination (unicode par défaut) 
Return values
string|array<string|int, mixed> —texte corrigé
html2unicode()
Transforme les entités HTML en unicode
    
                    html2unicode(string $texte[, bool $secure = false ]) : string
        Transforme les é en {
Parameters
- $texte : string
- 
                    texte à convertir 
- $secure : bool = false
- 
                    true pour ne pas convertir les caracteres malins < & etc. 
Return values
string —texte converti
unicode2charset()
Transforme les entites unicode  dans le charset specifie
    
                    unicode2charset(string $texte[, string $charset = 'AUTO' ]) : string
        Attention on ne transforme pas les entites <  car si elles ont ete encodees ainsi c'est a dessein
Parameters
- $texte : string
- 
                    texte unicode à transformer 
- $charset : string = 'AUTO'
- 
                    Charset à appliquer au texte Par défaut (AUTO), le charset sera celui du site. 
Return values
string —texte transformé dans le charset souhaité
importer_charset()
Importer un texte depuis un charset externe vers le charset du site
    
                    importer_charset(string $texte[, string $charset = 'AUTO' ]) : string
        Les caractères non resolus sont transformés en {
Parameters
- $texte : string
- 
                    texte unicode à importer 
- $charset : string = 'AUTO'
- 
                    Charset d'origine du texte Par défaut (AUTO), le charset d'origine est celui du site. 
Return values
string —texte transformé dans le charset site
utf_8_to_unicode()
Transforme un texte UTF-8 en unicode
    
                    utf_8_to_unicode(string $source) : string
        Utilise la librairie mb si présente
Parameters
- $source : string
- 
                    texte UTF-8 à transformer 
Return values
string —texte transformé en unicode
utf_32_to_unicode()
Transforme un texte UTF-32 en unicode
    
                    utf_32_to_unicode(string $source) : string
        UTF-32 ne sert plus que si on passe par iconv, c'est-a-dire quand mb_string est absente ou ne connait pas notre charset.
Mais on l'optimise quand meme par mb_string => tout ca sera osolete quand on sera surs d'avoir mb_string
Parameters
- $source : string
- 
                    texte UTF-8 à transformer 
Return values
string —texte transformé en unicode
caractere_utf_8()
Transforme un numéro unicode en caractère utf-8
    
                    caractere_utf_8(int $num) : string
        Ce bloc provient de php.net
Parameters
- $num : int
- 
                    Numéro de l'entité unicode 
Tags
Return values
string —Caractère utf8 si trouvé, '' sinon
unicode_to_utf_8()
Convertit un texte unicode en utf-8
    
                    unicode_to_utf_8(string $texte) : string
    
        Parameters
- $texte : string
- 
                    texte à convertir 
Return values
string —texte converti
unicode_to_javascript()
Convertit les unicode Ĉ en javascript \u0108
    
                    unicode_to_javascript(string $texte) : string
    
        Parameters
- $texte : string
- 
                    texte à convertir 
Return values
string —texte converti
javascript_to_unicode()
Convertit les %uxxxx (envoyés par javascript) en &#yyy unicode
    
                    javascript_to_unicode(string $texte) : string
    
        Parameters
- $texte : string
- 
                    texte à convertir 
Return values
string —texte converti
javascript_to_binary()
Convertit les %E9 (envoyés par le browser) en chaîne du charset du site (binaire)
    
                    javascript_to_binary(string $texte) : string
    
        Parameters
- $texte : string
- 
                    texte à convertir 
Return values
string —texte converti
translitteration_rapide()
Substition rapide de chaque graphème selon le charset sélectionné.
    
                    translitteration_rapide(string|null $texte[, string $charset = 'AUTO' ][, string $complexe = '' ]) : string
    
        Parameters
- $texte : string|null
- $charset : string = 'AUTO'
- $complexe : string = ''
Tags
Return values
stringtranslitteration()
Translittération charset => ascii (pour l'indexation)
    
                    translitteration(string|null $texte[, string $charset = 'AUTO' ][, string $complexe = '' ]) : string
        Permet, entre autres, d’enlever les accents, car la table ASCII non étendue ne les comporte pas.
Attention les caractères non reconnus sont renvoyés en utf-8
Parameters
- $texte : string|null
- $charset : string = 'AUTO'
- $complexe : string = ''
Tags
Return values
stringtranslitteration_complexe()
Translittération complexe
    
                    translitteration_complexe(string|null $texte[, bool $chiffres = false ]) : string
        à est retourné sous la forme a`  et pas à
mais si $chiffre=true, on retourne a8 (vietnamien)
Parameters
- $texte : string|null
- $chiffres : bool = false
Tags
Return values
stringtranslitteration_chiffree()
Translittération chiffrée
    
                    translitteration_chiffree(string $car) : string
        Remplace des caractères dans une chaîne par des chiffres
Parameters
- $car : string
Return values
stringbom_utf8()
Reconnaitre le BOM utf-8 (0xEFBBBF)
    
                    bom_utf8(string $texte) : bool
    
        Parameters
- $texte : string
- 
                    texte dont on vérifie la présence du BOM 
Return values
bool —true s'il a un BOM
is_utf8()
Vérifie qu'une chaîne est en utf-8 valide
    
                    is_utf8(string $string) : bool
        Note: preg_replace permet de contourner un "stack overflow" sur PCRE
Parameters
- $string : string
- 
                    texte dont on vérifie qu'il est de l'utf-8 
Tags
Return values
bool —true si c'est le cas
is_ascii()
Vérifie qu'une chaîne est en ascii valide
    
                    is_ascii(string $string) : bool
    
        Parameters
- $string : string
- 
                    texte dont on vérifie qu'il est de l'ascii 
Return values
bool —true si c'est le cas
transcoder_page()
Transcode une page vers le charset du site
    
                    transcoder_page(string $texte[, string $headers = '' ]) : string
        Transcode une page (attrapée sur le web, ou un squelette) vers le charset du site en essayant par tous les moyens de deviner son charset (y compris dans les headers HTTP)
Parameters
- $texte : string
- 
                    Page à transcoder, dont on souhaite découvrir son charset 
- $headers : string = ''
- 
                    Éventuels headers HTTP liés à cette page 
Return values
string —texte transcodé dans le charset du site
spip_substr()
Coupe un texte selon substr()
    
                    spip_substr(string $c[, int $start = 0 ][, null|int $length = null ]) : string
        Coupe une chaîne en utilisant les outils mb* lorsque le site est en utf8
Parameters
- $c : string
- 
                    Le texte 
- $start : int = 0
- 
                    Début 
- $length : null|int = null
- 
                    Longueur ou fin 
Tags
Return values
string —Le texte coupé
spip_ucfirst()
Rend majuscule le premier caractère d'une chaîne utf-8
    
                    spip_ucfirst(string $c) : string
        Version utf-8 d'ucfirst
Parameters
- $c : string
- 
                    La chaîne à transformer 
Return values
string —La chaîne avec une majuscule sur le premier mot
spip_strtolower()
Passe une chaîne utf-8 en minuscules
    
                    spip_strtolower(string $c) : string
        Version utf-8 de strtolower
Parameters
- $c : string
- 
                    La chaîne à transformer 
Return values
string —La chaîne en minuscules
spip_strlen()
Retourne la longueur d'une chaîne utf-8
    
                    spip_strlen(string $c) : int
        Version utf-8 de strlen
Parameters
- $c : string
- 
                    La chaîne à compter 
Return values
int —Longueur de la chaîne
utf8_noplanes()
Transforme une chaîne utf-8 en utf-8 sans "planes" ce qui permet de la donner à MySQL "utf8", qui n'est pas un utf-8 complet L'alternative serait d'utiliser utf8mb4
    
                    utf8_noplanes(string $x) : string
    
        Parameters
- $x : string
- 
                    La chaîne à transformer 
Return values
string —La chaîne avec les caractères utf8 des hauts "planes" échappée en unicode : 💩