begin process at 2012 02 15 08:53:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > COULEURS MIRC -> HTML [BIS]

COULEURS MIRC -> HTML [BIS]


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Niveau :Débutant Date de création :18/03/2005 Date de mise à jour :26/03/2005 01:14:58 Vu / téléchargé :9 655 / 164

Auteur : PaDa

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

Tout est dans le titre ! ce code traduit les codes couleurs mIRC en couleurs HTML.
Une autre source fait ca sur le site, mais j'utilise une méthode différente, à savoir des regex partout pour reconnaître les masques.

Source

  • <?
  • function m2h($t) {
  • //gestion couleurs mirc
  • //Codes couleurs mirc de base : récupérables par /col :
  • //Alias col { var %i 0,%j | while (%i <= 15) { %j = %j $color(%i) | inc %i } | echo -a %j }
  • $c = explode(" ","16777215 0 8323072 37632 255 127 10223772 32764 65535 64512 9671424 16776960 16515072 16711935 8355711 13816530");
  • $d = array_map("m2h_colors",$c);
  • //codes ascii : b > 2 , k > 3 , o > 15 , r > 22 , u > 31
  • //remplacement des Ctrl+K non valides
  • $t = preg_replace("#".chr(3)."(?!\d)#",chr(15),$t);
  • //substitutions gras
  • $pattern_b = "!".chr(2)."(.*?)(".chr(2)."|".chr(15)."|$|(?=<br ?/?>))!i";
  • $t = preg_replace($pattern_b,"<b>$1</b>$2",$t);
  • //substitution soulignés
  • $pattern_u = "!".chr(31)."(.*?)(".chr(31)."|".chr(15)."|$|(?=<br ?/?>))!i";
  • $t = preg_replace($pattern_u,"<u>$1</u>$2",$t);
  • $t = preg_replace("!(?:<b></b>|<u></u>)!i","",$t);
  • //Ctrl + O et Reverse
  • $a1 = array(chr(15),chr(22),chr(2),chr(31));
  • $a2 = array(chr(3)."01,00",chr(3)."00,01","","");
  • $t = str_replace($a1,$a2,$t);
  • //substitution des ctrl + K
  • while (preg_match("!^(.*)".chr(3)."(\d{0,2},?\d{0,2})(.*?)(?:".chr(3)."|$|(?=<br ?/?>))(.*)!i",$t,$matches)) {
  • $k = explode(",",$matches[2]);
  • $k0 = 1;
  • $k1 = 0;
  • $k = array_map("abs",$k);
  • if ( ($k[0] >= 0) && ($k[0] <= 15) ) {
  • $k0 = $k[0];
  • }
  • if ( (array_key_exists('1',$k)) && ($k[1] >= 0) && ($k[1] <= 15) ) {
  • $k1 = $k[1];
  • }
  • $couleur0 = $d[$k0];
  • $couleur1 = $d[$k1];
  • $couleur = "<span style=\"color:".$couleur0.";background-color:".$couleur1."\">";
  • $t = $matches[1].$couleur.$matches[3]."</span>".$matches[4];
  • }
  • return stripslashes($t);
  • }
  • function m2h_colors($color) {
  • //conversion couleurs mirc en R,G,B puis en format couleur Web
  • //passage au R,G,B
  • $b = $color - $color % (256*256);
  • $g = ($color - $b) - ($color - $b) % 256;
  • $r = $color % 256;
  • $b = $b / (256*256);
  • $g = $g / 256;
  • $c = explode(' ',"$r $g $b");
  • $c = array_map("dechex",$c);
  • $c = array_map("m2h_format",$c);
  • $color = implode('',$c);
  • return '#' . $color;
  • }
  • function m2h_format($n) {
  • //force la longueur d'un nombre à deux caractères
  • if (strlen($n) >= 2) {
  • return $n;
  • }
  • return '0'.$n;
  • }
  • ?>
<?
function m2h($t) {
    //gestion couleurs mirc
    //Codes couleurs mirc de base : récupérables par /col :
    //Alias col { var %i 0,%j | while (%i <= 15) { %j = %j $color(%i) | inc %i } | echo -a %j }
    $c = explode(" ","16777215 0 8323072 37632 255 127 10223772 32764 65535 64512 9671424 16776960 16515072 16711935 8355711 13816530");
    $d = array_map("m2h_colors",$c);
    //codes ascii : b > 2 , k > 3 , o > 15 , r > 22 , u > 31
    //remplacement des Ctrl+K non valides
    $t = preg_replace("#".chr(3)."(?!\d)#",chr(15),$t);
    //substitutions gras
    $pattern_b = "!".chr(2)."(.*?)(".chr(2)."|".chr(15)."|$|(?=<br ?/?>))!i";
    $t = preg_replace($pattern_b,"<b>$1</b>$2",$t);
    //substitution soulignés
    $pattern_u = "!".chr(31)."(.*?)(".chr(31)."|".chr(15)."|$|(?=<br ?/?>))!i";
    $t = preg_replace($pattern_u,"<u>$1</u>$2",$t);
    $t = preg_replace("!(?:<b></b>|<u></u>)!i","",$t);
    //Ctrl + O et Reverse
    $a1 = array(chr(15),chr(22),chr(2),chr(31));
    $a2 = array(chr(3)."01,00",chr(3)."00,01","","");
    $t = str_replace($a1,$a2,$t);
    //substitution des ctrl + K
    while (preg_match("!^(.*)".chr(3)."(\d{0,2},?\d{0,2})(.*?)(?:".chr(3)."|$|(?=<br ?/?>))(.*)!i",$t,$matches)) {
    $k = explode(",",$matches[2]);
    $k0 = 1;
    $k1 = 0;
    $k = array_map("abs",$k);
    if ( ($k[0] >= 0) && ($k[0] <= 15) ) {
        $k0 = $k[0];
    }       
    if ( (array_key_exists('1',$k)) && ($k[1] >= 0) && ($k[1] <= 15) ) {
        $k1 = $k[1];
    }
    $couleur0 = $d[$k0];
    $couleur1 = $d[$k1];
    $couleur = "<span style=\"color:".$couleur0.";background-color:".$couleur1."\">";
    $t = $matches[1].$couleur.$matches[3]."</span>".$matches[4];
    }
  return stripslashes($t);
}
function m2h_colors($color) {
	//conversion couleurs mirc en R,G,B puis en format couleur Web
	//passage au R,G,B
	$b = $color - $color % (256*256);
	$g = ($color - $b) - ($color - $b) % 256;
	$r = $color % 256;
	$b = $b / (256*256);
	$g = $g / 256;
	$c = explode(' ',"$r $g $b");
	$c = array_map("dechex",$c);
	$c = array_map("m2h_format",$c);
	$color = implode('',$c);
	return '#' . $color;
}
function m2h_format($n) {
  //force la longueur d'un nombre à deux caractères
  if (strlen($n) >= 2) {
  	return $n;
	}
	return '0'.$n;
}
?>

 Conclusion

N'hésitez pas si un bug arrive, j'ai pu grâce au fichier joint en .zip traduire des fichiers de 2800 lignes en 5s environ (en local), un fichier de 11000 lignes passe tout juste en 28s, ensuite c'est trop gros.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

26 mars 2005 01:14:58 :
bug CtrlB/CtrlO (annulait le CtrlB mais ne remettait pas a zero les couleurs si CtrlB précédent)

 Sources du même auteur

Source avec Zip REMPLACEMENT BALISES BBCODE

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

Commentaires et avis

Commentaire de fyltum le 20/03/2005 10:32:59

Quand on est très bon dans certains langages on a des facilités apparemment :)
Je commence aussi le php mais pour l'instant je me perfectione en html, je ne comprends pas trop comment utiliser ta source :(

Commentaire de PaDa le 20/03/2005 11:00:21

lol :)
slt fyltum :)
le plus simple pour utiliser la source et voir ce qu'elle fait, tu télécharges et installes EasyPHP, et tu lances la page que j'ai mis en .zip depuis le répertoire EasyPHP, sous dossier "www".
Au pire, va sur http://pada.exolia.net/mirc.php , c/c un bout de log a toi, pas trop gros, et tu verras ;)

Commentaire de fyltum le 20/03/2005 13:03:27

All right j'ai testé sur ton site c'est canon,
Je dois y aller, je testerai le reste après.
Merci :)

Commentaire de Naza le 20/03/2005 14:59:39

Je me demande si avec plusieurs replace, le code serait pas beaucoup plus court ?

Joli code par contre :)

--
Nazario

Commentaire de Number32 le 19/12/2005 14:32:29

Pas mal, (J'ai vu ce code suite a la réponse sur PhpFrance d'un visiteurs ..)

Cependant j'aurais quelques remarques :

Le script agis de facon bizard avec les ctrl+w et ctrl+r .. (Anule la mise en forme, reverse)
Et certain zone censée etre en gras ne le sont pas.
Ainsi que d'autre devant etre sur fond gris..

Pour finir, j'ai moi même réaliser un script de ce genre :
http://www.phpfrance.com/forums/voir_reponse-86596.php#80124
Qui apres des test est plus rapide (1.4 contre 0.9 de moyenne pr le mien sur base de 131 topic a parsé)

Je suis preneur de critique aussi ;-)

Commentaire de PaDa le 19/12/2005 16:17:55

oki do !
les ctrl+o (non w je crois) et les gris j'avais vu, pas les gras, j'ai essayé de changer un peu chez moi mais je n'ai pas refait trop de tests, il faudrait que j'update ici.
je regarderai ta source à l'occasion, qd j'aurai un moment la semaine prochaine
merci ;)

Commentaire de Number32 le 19/12/2005 16:54:52

Pas de probleme je reviendrais voir des que j'aurais une réponse d'ici par mail ;-)

Commentaire de Tarvos le 30/12/2005 23:34:33

http://www.phpcs.com/code.aspx?ID=30045

Mon code me semble franchement plus court... et fonctionne avec des fichiers à plusieurs lignes, comme des logs par exemple. Ou est ce juste moi qui ai oublié quelque chose?

Commentaire de PaDa le 31/12/2005 01:55:35

Ma 2e et ma 3e fonctions sont pas utiles pour la tienne, vu que je transforme les RGB a la main et que tu les mets direct en array toi au début. Ensuite, le traitement est pas tout a fait le même : ma fonction accepte du ctrl+K123456 elle va le traiter comme CtrlK12 puis 3456, la tienne je sais pas..
Je suppose qu'au final la tienne est meilleure, j'ai fait ca juste pour débuter en php ca m'a permis de découvrir la syntaxe de base :D

Commentaire de Tarvos le 31/12/2005 10:42:42

En effet j'avais omis ce détail... mais il est maintenant corrigé, merci!

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales