Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


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 : ozzmax
Version : 17/01/2006
Melanger une phrase
$phrase = "Entre ici la phrase de ton choix, et en plus tu peux mettre 2 espaces  si tu veux";
   $matrice = split(" +",trim($phrase)); //Split la phrase dans une matrice avec les espaces comme références
   $cp = count($matrice);
   $mele = $matrice; // copie l'array pour avoir la meme grosseur
   
   echo"La phrase originale est : $phrase <br>";
   echo"La phrase mèlée est : ";
   
   for($cpt=0;$cpt<$cp;$cpt++){
      $tmp = rand(0,$cp);
      
      while(vérif($tmp,$mele)){
         $tmp = rand(0,$cp);
      }
      
      $mele[$cpt] = $tmp;
   
      $tmp-=1; //décrémente de 1 car le count ne tiens pas compte du 0
      //quand sa sort ici les mots sont mélangé on les affiche
      echo "$matrice[$tmp] ";
   }   

/*Fonction qui vérifie qu'il n'y a pas de doublons
   @param $nombre est le nombre que la classe rand génère
   @param $mele matrice passée en référence pour ne pas perdre les valeurs de la variable
   @return true si c'est un doublons
*/
function vérif($nombre,&$mele){
      for($i=0;$i<count($mele);$i++){
         if($mele[$i]==$nombre){
            return true;
         }
      }
      return false;
}

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);
?>

precedent    sommaire    suivant   

Consultez les autres pages sources


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2006  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com