Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERTISSEUR CODES COULEUR ET STYLE SH (TTY) EN HTML


Information sur la source



Description

Cliquez pour voir la capture en taille normale
Permet d'afficher en html le retour d'une appli linux qui utilise les couleurs avec des codes TTY.


Infos utilisées: (prises dans le code de eApp, une base de serveur MMORPG)

// \033[#;...;#m - Set Graphics Rendition (SGR)
//
//  printf("\x1b[1;31;40m"); // Bright red on black
//  printf("\x1b[3;33;45m"); // Blinking yellow on magenta (blink not implemented)
//  printf("\x1b[1;30;47m"); // Bright black (grey) on dim white
//
//  Style           Foreground      Background
//  1st Digit       2nd Digit       3rd Digit RGB
//  0 - Reset       30 - Black      40 - Black 000
//  1 - FG Bright   31 - Red        41 - Red 100
//  2 - Unknown     32 - Green      42 - Green 010
//  3 - Blink       33 - Yellow     43 - Yellow 110
//  4 - Underline   34 - Blue       44 - Blue 001
//  5 - BG Bright   35 - Magenta    45 - Magenta 101
//  6 - Unknown     36 - Cyan       46 - Cyan 011
//  7 - Reverse     37 - White      47 - White 111
//  8 - Concealed (invisible)
 

Source

  • <?
  • $cmd="ls -l --color=yes /dev";
  • // WARNING: Décommenter la ligne suivante peut être dangereux si votre serveur est publique !!!
  • // if(!empty($_GET["cmd"])) $cmd=$_GET["cmd"];
  • ?>
  • <html><head><title>Test couleurs - <? echo $cmd; ?></title></head>
  • <body bgcolor="#000000" text="#FFFFFF"><p><pre>
  • <?
  • exec($cmd,$out);
  • foreach($out as $line)
  • {
  • $close = "";
  • $mode_start = "";
  • $mode_end = "";
  • $line = explode("\033",$line);
  • foreach($line as $bloc)
  • {
  • if(substr($bloc,0,1)!="[")
  • {
  • echo $mode_start.$bloc.$mode_end;
  • continue;
  • }
  • $pos = strpos($bloc,"m");
  • if($pos===FALSE)
  • {
  • echo substr($bloc,3);
  • continue;
  • }
  • if(!empty($close)) echo $close;
  • $font=false;
  • $code = substr($bloc,1,$pos);
  • $texte = substr($bloc,$pos+1);
  • if($code=="0m" || $code=="m")
  • { // RESET
  • $mode_start = "";
  • $mode_end = "";
  • echo $texte;
  • continue;
  • }
  • $code = explode(";",substr($code,0,strlen($code)-1));
  • foreach($code as $c)
  • {
  • if($c<10)
  • {
  • switch($c)
  • {
  • case 0: // Reset
  • $mode_start = "";
  • $mode_end = "";
  • break;
  • case 1: // FG Bright
  • $mode_start = "<b>";
  • $mode_end = "</b>";
  • break;
  • case 2: // ???
  • $mode_start = "";
  • $mode_end = "";
  • break;
  • case 3: // Blink
  • $mode_start = "<blink>";
  • $mode_end = "</blink>";
  • break;
  • case 4: // Underline
  • $mode_start = "<u>";
  • $mode_end = "</u>";
  • break;
  • case 5: // BG Bright [REMPLACE PAR I CAR RIEN TROUVE D'AUTRE]
  • $mode_start = "<i>";
  • $mode_end = "</i>";
  • break;
  • case 6: // ???
  • $mode_start = "";
  • $mode_end = "";
  • break;
  • case 7: // Reverse [NOT SUPPORTED]
  • $mode_start = "";
  • $mode_end = "";
  • break;
  • case 8: // Concealed
  • $mode_start = "<span style=\"visibility: hidden;\">";
  • $mode_end = "</span>";
  • break;
  • }
  • }
  • else if($c>29 && $c<40)
  • {
  • echo "<font color=\"#".id_to_hex($c-30)."\">";
  • $close="</font>".$close;
  • }
  • else if($c>39 && $c<50)
  • {
  • echo "<span style=\"background: #".id_to_hex($c-40).";\">";
  • $close="</span>".$close;
  • }
  • }
  • echo $mode_start.$texte.$mode_end;
  • }
  • if(!empty($close)) echo $close;
  • echo "<br/>\n";
  • }
  • function id_to_hex($id)
  • {
  • switch($id)
  • {
  • case 0: return "000000";
  • case 1: return "FF0000";
  • case 2: return "00FF00";
  • case 3: return "FFFF00";
  • case 4: return "0000FF";
  • case 5: return "FF00FF";
  • case 6: return "00FFFF";
  • case 7: return "FFFFFF";
  • default: return "EEEEEE"; // Erreur
  • }
  • }
  • ?>
  • </pre></p></body></html>
<?

$cmd="ls -l --color=yes /dev";

// WARNING: Décommenter la ligne suivante peut être dangereux si votre serveur est publique !!!
// if(!empty($_GET["cmd"])) $cmd=$_GET["cmd"];

?>
<html><head><title>Test couleurs - <? echo $cmd; ?></title></head>
<body bgcolor="#000000" text="#FFFFFF"><p><pre>
<?

exec($cmd,$out);

foreach($out as $line)
{
	$close = "";
	$mode_start = "";
	$mode_end = "";
	$line = explode("\033",$line);
	foreach($line as $bloc)
	{
		if(substr($bloc,0,1)!="[")
		{
			echo $mode_start.$bloc.$mode_end;
			continue;
		}
		$pos = strpos($bloc,"m");
		if($pos===FALSE)
		{
			echo substr($bloc,3);
			continue;
		}
		if(!empty($close)) echo $close;
		$font=false;
		$code = substr($bloc,1,$pos);
		$texte = substr($bloc,$pos+1);
		if($code=="0m" || $code=="m")
		{ // RESET
			$mode_start = "";
			$mode_end = "";
			echo $texte;
			continue;
		}
		$code = explode(";",substr($code,0,strlen($code)-1));
		foreach($code as $c)
		{
			if($c<10)
			{
				switch($c)
				{
					case 0: // Reset
						$mode_start = "";
						$mode_end = "";	
						break;
					case 1: // FG Bright
						$mode_start = "<b>";
						$mode_end = "</b>";	
						break;
					case 2: // ???
						$mode_start = "";
						$mode_end = "";	
						break;
					case 3: // Blink
						$mode_start = "<blink>";
						$mode_end = "</blink>";	
						break;
					case 4: // Underline
						$mode_start = "<u>";
						$mode_end = "</u>";	
						break;
					case 5: // BG Bright [REMPLACE PAR I CAR RIEN TROUVE D'AUTRE]
						$mode_start = "<i>";
						$mode_end = "</i>";	
						break;
					case 6: // ???
						$mode_start = "";
						$mode_end = "";	
						break;
					case 7: // Reverse [NOT SUPPORTED]
						$mode_start = "";
						$mode_end = "";	
						break;
					case 8: // Concealed
						$mode_start = "<span style=\"visibility: hidden;\">";
						$mode_end = "</span>";	
						break;
				}
			}
			else if($c>29 && $c<40)
			{
				echo "<font color=\"#".id_to_hex($c-30)."\">";
				$close="</font>".$close;
			}
			else if($c>39 && $c<50)
			{
				echo "<span style=\"background: #".id_to_hex($c-40).";\">";
				$close="</span>".$close;
			}
		}


		echo $mode_start.$texte.$mode_end;
	}
	if(!empty($close)) echo $close;
	echo "<br/>\n";
}

function id_to_hex($id)
{
	switch($id)
	{
		case 0: return "000000";
		case 1: return "FF0000";
		case 2: return "00FF00";
		case 3: return "FFFF00";
		case 4: return "0000FF";
		case 5: return "FF00FF";
		case 6: return "00FFFF";
		case 7: return "FFFFFF";
		default: return "EEEEEE"; // Erreur
	}
}

?>
</pre></p></body></html>

Conclusion

Morceau de code réalisé pour une petite interface d'admin web perso.

J'avait cherché un tel code sur CS puis internet mais je n'avait rien trouvé. J'ai donc codé mon parseur et je le poste au cas où ca pourrait servir à d'autres...

Je sais qu'il existe d'autres codes de style, principalement pour le déplacement du curseur et l'éffacement, mais il sont bcps plus durs à reproduire en html.
 

Commentaires et avis

signaler à un administrateur
Commentaire de coucou747 le 11/04/2007 07:17:52

L'idee est interessante, apres, on fera les recommandations habituelles :
# <body bgcolor="#000000" text="#FFFFFF"><p><pre>  c'est du vieux html,
<?php est a utiliser a la place de <?
' est a utiliser a la place de "
il faut verifier que $out contient bien une ligne, sinon, on a un warning
idem pour #  $code = explode(";",substr($code,0,strlen($code)-1));
# foreach($code as $c)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Image sur click .. [ par nicolas66 ] Bonsoir @ tous !Je voulais juste savoir comen il était possible d'afficher une image créee avec php dans la meme page ou il y a un formulaire sur clic Comment je peux cacher la source de mon code html dans une page php pour ne pas qu'on voye les action faite par le site ? [ par BenXbox ] Comment je peux cacher la source de mon code html dans une page php pour ne pas qu'on voye les action faite par le site ? gros problème avec les cookies [ par phsautreau ] Bonjour,Je développe un site que je veux adaptable au mal voyant, cela signifie que j'ai créé une petite barre à l'instar de celle présenta lors de l' Comment créer un fichier externe avec du code utilisé par plusieur page html ??? [ par GuilleW ] Bonjour ....Pour commencer c'est pas mal qu'il y est du monde qui se bouge pour aider les autes ... (entre autre ... moi dans ce cas !!! <img src=/i lancer du code php a partir d un bouton html [ par fernand22fr ] Bonjours, je souhaiterais savoir comment je pourrais lancer du code php lorsque j appui sur un bouton( input type="button") d une page html.Merci d a Lire un code html en php [ par Yuleesize ] Bjr,J'aimerais savoir comment faire pour lire le code source html de n'importe quelle page du web via PHPJe crois qu'il faut utiliser la fonction file Envoi de mail HTML [ par cyaya ] j'ai ecrit ce code pour envoyer des mail avec un textArea en format text, je voudrais savoir s'il y une option à rajouter pour pouvoir envoyer le mail comment parcourir le code d'1 page html pour remplacer des zones définis [ par nakata94 ] Est ce qu'une personne pourrais m'aider, en me disant comment parcourir le code source d'1 page html pour remplacer des zones définis. Par exemple, je include nuit à l'affichage MySql [ par webdesignasp ] Bonjour,Qu'elqu'un peut-il me dire pourquoi j'ai ce problème ?Quand je lance cette page ça marche :&lt;?//include("include/connect.php");$table="clien Code html et php [ par actinetwork ] Hello tlm. je voulais juste poser une petite question...voila,un bou de mon code php ressemble a un truc du style:&lt;phpmysql_connect($connect_host,


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.