IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Chaînes de caractères
        Gérer de l'UTF8 sans tenir compte de l'encodage du navigateur
        Crypter une adresse email pour éviter le spam
        Un BBCode pour faire des smileys
        2.1. Expressions régulières(5)
                Transformer les mails et urls en liens cliquables
                Enlever les accents d'une chaîne
                Verifie que le texte entré comporte uniquement des chiffres et des opérateurs arythmétiques.
                BBCode simple
                Mettre des mots en surbrillance dans un texte

rechercher
precedent    sommaire    suivant    telecharger


Auteur : iubito
Version : 11/01/2006
Gérer de l'UTF8 sans tenir compte de l'encodage du navigateur
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('<b>Warning:</b><br/>'
                     .'<tt>utf8entities(string $source)</tt> : $source should be a string.');
   
   //utf8 to unicode
   $unicode = array();       
   $values = array();
   $lookingFor = 1;
   $len = strlen($str);
   for ($i = 0; $i < $len; $i++ )
   {
      $thisValue = ord($str[$i]);
      if ($thisValue < 128)
         $unicode[] = $thisValue;
      else
      {
         if (count($values) == 0)
            $lookingFor = ($thisValue < 224)?2:3;
         $values[] = $thisValue;
         if (count($values) == $lookingFor)
         {
            $number = ($lookingFor == 3)
               ?(($values[0]%16)*4096) + (($values[1]%64)*64) + ($values[2]% 64)
               :(($values[0]%32)*64) + ($values[1]%64);
            $unicode[] = $number;
            $values = array();
            $lookingFor = 1;
         } // if
      } // if
   } // for
   
   $entities = '';
   foreach($unicode as $value)
      $entities .= $value<128 ? chr($value) : ('&#'.$value.';');
   return $entities;
}


/**
 * Retourne <kbd>true</kbd> 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 & amp;. Ainsi si on passe "& eacute;" 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.';');

Auteur : trakiss
Version : 11/01/2006
Crypter une adresse email pour éviter le spam
<?php
function spam($chaine) {

  $ret_chaine='';
  $lg = strlen($chaine);

  for ($x = 0; $x < $lg; $x++) {
    $ord = ord(substr($chaine, $x, 1));
    $ret_chaine .= "&#$ord;";
   }

   echo $ret_chaine;
 }

spam(trakiss@2037.biz);
?>

Auteur : trakiss
Version : 11/01/2006
Un BBCode pour faire des smileys
<?php

function bbcode($text)
{
   $text = nl2br($text);
   
   $text = str_replace("[b]", "<b>", $text);
   $text = str_replace("[/b]", "</b>", $text);

   $text = str_replace("[u]", "<u>", $text);
   $text = str_replace("[/u]", "</u>", $text);

   $text = str_replace("[i]", "<i>", $text);
   $text = str_replace("[/i]", "</i>", $text);
   
   $text = str_replace("[center]", "<center>", $text);
   $text = str_replace("[/center]", "</center>", $text);
   
   $text = str_replace("  ", "&nbsp;&nbsp;", $text);
   
   $text = str_replace(':)','<img src="http://www.monsite.com/images/smiley/smile.gif" alt="" style="border:0"/>',$text);
   $text = str_replace(';)','<img src="http://www.monsite.com/images/smiley/hehe.gif" alt="" style="border:0"/>',$text);
   $text = str_replace(':P','<img src="http://www.monsite.com/images/smiley/langue.gif" alt="" style="border:0"/>',$text);
   $text = str_replace(':D','<img src="http://www.monsite.com/images/smiley/bigrin.gif" alt="" style="border:0"/>',$text);
   $text = str_replace(':o','<img src="http://www.monsite.com/images/smiley/bouh.gif" alt="" style="border:0"/>',$text);
   $patterns = array();
   $replacements = array();

   $patterns[] = "#\[img\](.*?)\[/img\]#si";
   $replacements[] = "<img src=\"\\1\" border=\"0\" />";

   $patterns[] = "#\[url\]([a-z0-9]+?://){1}([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\[/url\]#is";
   $replacements[] = "<a href=\"\1\2\" target=\"_blank\" class=\"postlink\">\1\2</a>";

   $patterns[] = "#\[url\]((www|ftp)\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\[/url\]#si";
   $replacements[] = "<a href=\"http://\\1\" target=\"_blank\" class=\"postlink\">\\1</a>";

   $patterns[] = "#\[url=([a-z0-9]+://)([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\](.*?)\[/url\]#si";
   $replacements[] = "<a href=\"\\1\\2\">\\6</a>";

   $patterns[] = "#\[url=(([\w\-]+\.)*?[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\](.*?)\[/url\]#si";
   $replacements[] = "<a href=\"http://\\1\">\\5</a>";

   $patterns[] = "#\[email\]([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si";
   $replacements[] = "<a href=\"mailto:\\1\">\\1</A>";
   
   return preg_replace($patterns, $replacements, $text);
}

echo bbcode($truc);
?>

rechercher
precedent    sommaire    suivant    telecharger

Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.