Colorisation html des logs irc

Contenu du snippet

Salut a tous, une autre de mes sources que j'ai mis en ligne, un colorisateur HTML des logs IRC.
En gros, vous faites un C/C de vos textes (avec les codes irc => caracteres chr(2) pour le gras et tout) et ca vous ressort un code HTML.

Pour utiliser la fonction :

echo irc2html(MON_LOG_IRC);

Source / Exemple :


function chooseColor($irc){
	switch($irc){
		case "0":$color=rgb2html(array(255, 255, 255));break;
		case "1":$color=rgb2html(array(0, 0, 0));break;
		case "2":$color=rgb2html(array(0, 0, 127));break;
		case "3":$color=rgb2html(array(0, 127, 0));break;
		case "4":$color=rgb2html(array(255, 0, 0));break;
		case "5":$color=rgb2html(array(127, 0, 0));break;
		case "6":$color=rgb2html(array(127, 0, 127));break;
		case "7":$color=rgb2html(array(255, 127, 0));break;
		case "8":$color=rgb2html(array(255, 255, 0));break;
		case "9":$color=rgb2html(array(0, 255, 0));break;
		case "10":$color=rgb2html(array(63, 127, 127));break;
		case "11":$color=rgb2html(array(0, 255, 255));break;
		case "12":$color=rgb2html(array(0, 0, 255));break;
		case "13":$color=rgb2html(array(255, 0, 255));break;
		case "14":$color=rgb2html(array(127, 127, 127));break;
		case "15":$color=rgb2html(array(191, 191, 191));break;
		default:$color=rgb2html(array(0, 0, 0));break;
	}
	return $color;
}

function irc2html($texte){	
	$buffer='<div class="irc"><h6>IRC : </h6>';
		
	$is_bold=false;
	$is_under=false;
	$is_fg=false;
	$is_bg=false;
	$is_space=false;
	
	$fg=1;
	$bg=0;
	for($i=0;$i<strlen($texte);$i++){
		$chr = substr($texte,$i,1);
		$ord = ord($chr);
		
		switch($ord){
			case "10":
				//->Retour à la ligne, fermer toutes les balises ouvertes
				if($is_bold) {$buffer.= "</b>";$is_bold=false;}
				if($is_under) {$buffer.= "</u>";$is_under=false;}
				if($is_fg) {$buffer.= "</span>";$is_fg=false;}
				if($is_bg) {$buffer.= "</span>";$is_bg=false;}
				$is_space=false;
				//$buffer.= "<br>";
				break;
				
			case "2":
				//->Mettre en gras
				if($is_bold) {$buffer.= "</b>";$is_bold=false;}
				else {$buffer.= "<b>";$is_bold=true;}
				
				break;
				
			case "3":
				//->Mettre en couleur
				$fg1="";$fg2="";$bg1="";$bg2="";
				$i++;$chr = substr($texte,$i,1);
				if(ereg("[0-9]",$chr)){
					$fg1=$chr;$i++;
					$chr=substr($texte,$i,1);
					if(ereg("[0-9]",$chr)){
						$fg2=$chr;$i++;$chr=substr($texte,$i,1);
					}
	
					if($chr==","){
						$i++;$chr = substr($texte,$i,1);
						if(ereg("[0-9]",$chr)){
							$bg1 = $chr;$i++;
							$chr = substr($texte,$i,1);
							if(ereg("[0-9]",$chr)){
								$bg2=$chr;
							}
							else{
								$i--;
							}
						}
					}
					else{
						$i--;
					}	
				}
				$fg=($fg1.$fg2)+0;
				$bg=($bg1.$bg2)+0;
				//echo "<b>[C : ".$fg." / ".$bg."]</b>";
				if($is_fg){$buffer.= "</span>";$is_fg=false;}
				if($fg!=0) {$buffer.= "<span style='color:".chooseColor($fg).";'>";$is_fg=true;}
				
				if($is_bg){$buffer.= "</span>";$is_bg=false;}
				if($bg!=0) {$buffer.= "<span style='background-color:".chooseColor($bg).";'>";$is_bg=true;}
				
				break;
				
			case "15":
				//->Enlever les couleurs
				if($is_fg) {$buffer.= "</span>";$is_fg=false;}
				if($is_bg) {$buffer.= "</span>";$is_bg=false;}
				if($is_bold) {$buffer.= "</b>";$is_bold=false;}
				if($is_under) {$buffer.= "</u>";$is_under=false;}
				break;
				
			case "22":
				//->Inverser BG et FG
				if($is_fg) {$buffer.= "</span>";$is_fg=false;}
				if($is_bg) {$buffer.= "</span>";$is_bg=false;}
				
				$temp=$fg;
				$fg=$bg;
				$bg=$temp;
				
				$buffer.= "<span style='color:".chooseColor($fg).";'>";$is_fg=true;
				$buffer.= "<span style='background-color:".chooseColor($bg).";'>";$is_bg=true;
			
				break;
				
			case "31":
				//->Souligner
				if($is_under) {$buffer.= "</u>";$is_under=false;}
				else {$buffer.= "<u>";$is_under=true;}
				break;
			case "32":
				//->Espace
				if($is_space) {$buffer.= "&nbsp;";$is_space=false;}
				else {$buffer.=" ";$is_space=true;}
				break;
			default:
				//->Chr normal, afficher
				$buffer.= $chr;
				break;
		}
	}
	$buffer.='</div>';
	return $buffer;
}

Conclusion :


J'ai mis en débutant car il n'y a pas de fonctions complexe, juste une boucle géante...
Voila :) à plus!

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.