HTML simple en UTF-8 conversion

HTML simple en UTF-8 conversion

Messagede Devorg le Mar 1 Juil 2008 15:56

HTML simple en UTF-8 conversion


Exemple:
echo html_to_utf8("ab č ć ž こ に ち わ ()[]{}!#$?* < >");

html_to_utf8 echo ( "ab Ä Ä‡ žã“ã«ã¡ã‚()[]{}!#$?* <> ");

Output: Sortie:
ab Ä Ä‡ ž ã“ ã« ã¡ ã‚ ()[]{}!#$?* &lt; &#62;

à partir de Ä Ä‡ žã“ã«ã¡ã‚()[]{}!#$?* <>


Code: Tout sélectionner

<?
function html_to_utf8 ($data)
    {
    return preg_replace("/\\&\\#([0-9]{3,10})\\;/e", '_html_to_utf8("\\1")', $data);
    }

function _html_to_utf8 ($data)
    {
    if ($data > 127)
        {
        $i = 5;
        while (($i--) > 0)
            {
            if ($data != ($a = $data % ($p = pow(64, $i))))
                {
                $ret = chr(base_convert(str_pad(str_repeat(1, $i + 1), 8, "0"), 2, 10) + (($data - $a) / $p));
                for ($i; $i > 0; $i--)
                    $ret .= chr(128 + ((($data % pow(64, $i)) - ($data % ($p = pow(64, $i - 1)))) / $p));
                break;
                }
            }
        }
        else
        $ret = "&#$data;";
    return $ret;
    }
?>
Avatar de l’utilisateur
Devorg
Administrateur
Administrateur
 
Messages: 297
Inscription: Lun 7 Avr 2008 14:07

Re: HTML simple en UTF-8 conversion

Messagede Devorg le Mar 1 Juil 2008 16:00

Si vos valeurs sont déjà en utf-8
peut-être voulez vous un tableau d'encodage utf8_encode seulement.

Ceci donne :

Code: Tout sélectionner
<?php
/**
* (Recursively) utf8_encode all array keys.
*
* @param array $array
* @return array with utf8_encoded keys
*/

function utf8_encode_array_keys($array)
{
  $array_type = array_type($array);

  if ($array_type == "map")
  {
    $result_array = array();

    foreach($array as $key => $value)
    {
      if (is_array($value))
      {
        // recursion
        $result_array[utf8_encode($key)] = utf8_encode_array_keys($value);
      }
      else
      {
        // value is not an array, no recursion
        $result_array[utf8_encode($key)] = $value;
      }
    }
   
    return $result_array;
  }

  else if ($array_type == "vector")
  {
    // do not encode anything, just follow the value if it is an array
    $result_array = array();
   
    foreach ($array as $key => $value)
    {
      if (is_array($value))
      {
        // recursion
        $result_array[$key] = utf8_encode_array_keys($value);
      }
      else
      {
        // value is not an array, no recursion
        $result_array[$key] = $value;
      }
    }
   
    return $result_array;
  }

  return false;     // argument is not an array, return false
}
?>


Il convient également de noter que les deux opération (avec les touches seulement) et l'opération avec les deux touches et des valeurs peuvent êtres inversés en remplaçant "encoder" par "décoder".
Avatar de l’utilisateur
Devorg
Administrateur
Administrateur
 
Messages: 297
Inscription: Lun 7 Avr 2008 14:07


Retourner vers Languages du web

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron