Documentation du code de SPIP et de ses plugins

SPIP

charsets.php

Gestion des charsets et des conversions

Ce fichier contient les fonctions relatives à la gestion de charsets, à la conversion de textes dans différents charsets et propose des fonctions émulant la librairie mb si elle est absente

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 &#129; 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 &#264; 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

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

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 &#129; 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 &#123;

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
author

Ronen

used-by
translitteration_rapide()
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 &#264; 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 $texte[, string $charset = 'AUTO' ][, string $complexe = '' ]) : string
Parameters
$texte : string
$charset : string = 'AUTO'
$complexe : string = ''
Tags
uses
caractere_utf_8()
global

array $CHARSET

staticvar

array $trans

used-by
translitteration()
Return values
string

translitteration()

Translittération charset => ascii (pour l'indexation)

translitteration(string $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
$charset : string = 'AUTO'
$complexe : string = ''
Tags
uses
corriger_caracteres()
uses
unicode_to_utf_8()
uses
html2unicode()
uses
charset2unicode()
uses
translitteration_rapide()
used-by
ancre_url()
used-by
translitteration_complexe()
Return values
string

translitteration_complexe()

Translittération complexe

translitteration_complexe(string $texte[, bool $chiffres = false ]) : string

&agrave; est retourné sous la forme a` et pas à mais si $chiffre=true, on retourne a8 (vietnamien)

Parameters
$texte : string
$chiffres : bool = false
Tags
uses
translitteration()
Return values
string

translitteration_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
string

bom_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_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
link
http://fr.php.net/manual/fr/function.mb-substr.php
link
http://www.php.net/manual/fr/function.substr.php
uses
spip_substr_manuelle()

si les fonctions php mb sont absentes

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 : 💩


        
On this page

Search results