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
- mathml2unicode() : string
- Transforme les entités mathématiques (MathML) 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
mathml2unicode()
Transforme les entités mathématiques (MathML) en unicode
mathml2unicode(string $texte) : string
Transforme ∠ en ∠ ainsi que toutes autres entités mathématiques
Parameters
- $texte : string
-
texte à convertir
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 : 💩