AsSaydalani Un logiciel pour la gestion pharmaceutique ...
- ventes aux guichets, reglements - utilisation de codes barres - Base de données des médicament saisie et ajour - Gestion des achats et des fournisseurs - Gestion des peromptions - ...
Al Modabbir Beton Une version de Al Modabbir destinée aux entreprises dont l'activité est la production et vente du beton ...
Al Hassib Comptabilité générale, Liasse comptable marocaine ...
Al Adae Logiciel de gestion de paiy et de
personnel ...
Acceuilphp, js(413) Gérer de l'UTF8 sans tenir compte de l'encodage du navigateur
Gérer de l'UTF8 sans tenir compte de l'encodage du navigateur
2010-12-17
Deux fonctions qui permettent écrire de l'arabe, du chinois, du russe...
sans se soucier de savoir si l'utilisateur a forcé le codage ou laissé le choix "codage auto" dans le navigateur.
/**
* utf8entities
*
* Pour améliorer l'htmlentities() pour les chaînes en UTF-8 !
*
* Transforme une chaîne UTF8 en entitées HTML & # nnn; n={0..9} visible
* dans tous les navigateurs.
* @param string $source Encoded using UTF-8
* @return string String of unicode entities
* @see http://www.php.net/utf8_decode
* @see http://www.randomchaos.com/document.php?source=php_and_unicode
*/
function utf8entities($str)
{
if (!is_string($str)) die('Warning: '
.'utf8entities(string $source) : $source should be a string.');
/**
* Retourne true si la string ou l'array de string est encodé en UTF8.
*
* Exemple d'utilisation. Vous voulez afficher un fichier texte sans vous soucier
* de son encodage (UTF-8 ou 8-bit).
* $array = file('fichier.txt');
* $isUTF8 = isUTF8($array);
* foreach($array as $val)
* {
* echo $isUTF8?utf8entities($val)
* :htmlentities($val);
* }
* @param mixed A string, or an array from a file() function.
* @return boolean
* @author iubito
*/
function isUTF8($string)
{
if (is_array($string))
{
$enc = implode('', $string);
return @!((ord($enc[0]) != 239) && (ord($enc[1]) != 187) && (ord($enc[2]) != 191));
}
else
{
return (utf8_encode(utf8_decode($string)) == $string);
}
}
Ma fonction utf8entities ne transforme pas les & en &. Ainsi si on passe "é" ou "é" ça imprime "é" à l'écran. Mais c'est vrai que ça peut être un bug vu que ça se comporte pas exactement comme htmlentities. Il en va de même pour < et >. Donc si on veut exactement le même comportement qu'htmlentities, il faut modifier la ligne (vers la fin du code)
$entities .= $value<128 ? chr($value) : (''.$value.';');
en
$entities .= $value<128 ? htmlentities(chr($value)) : (''.$value.';');