begin process at 2013 06 19 14:06:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > AJOUTER DE LA COULEUR A VOS BASH PHP

AJOUTER DE LA COULEUR A VOS BASH PHP


 Information sur la source

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :bash, couleur, shell Niveau :Débutant Date de création :30/01/2008 Date de mise à jour :30/01/2008 15:16:30 Vu :8 755

Auteur : gentilKiki

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

 Description

Cliquez pour voir la capture en taille normale
Je travaille régulièrement sur des bashs en php, a force de faire des fichiers d'aide (avec un -help), tout pas beaux, tout lugubres, je me suis dit que ce serait sympa de mettre en forme tout ca.

Voici donc 2 fonctions, une qui créé le code sh pour la gestion des couleurs, et l'autre qui parse les balises prévues a cet effet.

Imaginons une portion de scrips test.php suivant:

if($params['help']){
    $text = " Voici une demo de colorisation <c c=blue >via des tags</c>,\n ou <c c=red bg=green s=bold>plusieurs attributs peuvent etre utilisés.</c>
    echo parseShColorTag($text);
}

Source

  • /**
  • * $text : le text a colorer
  • * $txtColor : couleur voulue (black,red,green,cyan,magenta,black...)
  • * $bgColor : couleur de fond
  • * $styleTxt : style du text (bold,underline,reverse,flashing)
  • *
  • * return string
  • * A noter que certaines mises en forme ne fonctionnent pas sous tout les clients
  • **/
  • function shColorText($text='', $txtColor='',$bgColor='',$styleTxt='none'){
  • $__ESC = "\033";
  • $__START = "[";
  • $__END = "m";
  • $__CLEAR = $__ESC."[2J";
  • $__NORMAL = $__ESC."[0m";
  • if($text === 'CLEAR') return $__NORMAL.$__CLEAR;
  • if(empty($text) || !$text) return $__NORMAL;
  • //Text color
  • $aTextColor['black'] = 30;
  • $aTextColor['red'] = 31;
  • $aTextColor['green'] = 32;
  • $aTextColor['yellow'] = 33;
  • $aTextColor['blue'] = 34;
  • $aTextColor['magenta'] = 35;
  • $aTextColor['cyan'] = 36;
  • $aTextColor['white'] = 37;
  • //Background color
  • $aBgColor['black'] = 40;
  • $aBgColor['red'] = 41;
  • $aBgColor['green'] = 42;
  • $aBgColor['yellow'] = 43;
  • $aBgColor['blue'] = 44;
  • $aBgColor['magenta'] = 45;
  • $aBgColor['cyan'] = 46;
  • $aBgColor['white'] = 47;
  • //style text
  • $aStyle['none'] = 0; //normal
  • $aStyle['bold'] = 1; //gras
  • $aStyle['underline'] = 4; //souligné
  • $aStyle['flashing'] = 5; //clignotant
  • $aStyle['reverse'] = 7; //inversé
  • $c = $__ESC.$__START;
  • if($styleTxt && isset($aStyle[$styleTxt])) $a[] = $aStyle[$styleTxt];
  • if($txtColor && isset($aTextColor[$txtColor])) $a[] = $aTextColor[$txtColor];
  • if($bgColor && isset($aBgColor[$bgColor])) $a[] = $aBgColor[$bgColor];
  • if(!is_array($a)) return $text;
  • $c = $__ESC.$__START.join(';',$a).$__END;
  • return $c.$text.$__NORMAL;
  • }
  • /**
  • * Permet de mettre en forme la police d'un texte par des balises
  • *
  • * ex : Ceci est un <c c=blue bg=white s=bold>TEST</c>
  • *
  • **/
  • function parseShColorTag($str){
  • $tag = "/(<c[^>]*>)([^<]*)<\/c>/";
  • $innerTag = "/([\w]+)=([\w]+)/";
  • preg_match_all($tag,$str,$r);
  • if(!is_array($r[1])) return $str;
  • foreach($r[1] as $k => $v){
  • preg_match_all($innerTag,$v,$r2);
  • if(!is_array($r2[1])) return $str;
  • $c = $bg = $s = false;
  • while(list($i,$value)=each($r2[1])){
  • switch($value){
  • case 'c':
  • $c = $r2[2][$i];
  • break;
  • case 'bg':
  • $bg = $r2[2][$i];
  • break;
  • case 's':
  • $s = $r2[2][$i];
  • break;
  • }
  • }
  • $string = shColorText($r[2][$k], $c,$bg,$s);
  • $str = str_replace($r[0][$k],$string,$str);
  • }
  • return $str;
  • }
/**
* $text : le text a colorer
* $txtColor : couleur voulue (black,red,green,cyan,magenta,black...)
* $bgColor : couleur de fond
* $styleTxt : style du text (bold,underline,reverse,flashing) 
*
* return string
* A noter que certaines mises en forme ne fonctionnent pas sous tout les clients
**/

function shColorText($text='', $txtColor='',$bgColor='',$styleTxt='none'){
	
	$__ESC 		= "\033";
	$__START	= "[";
	$__END		= "m";
	
	$__CLEAR 	= $__ESC."[2J";
	$__NORMAL	= $__ESC."[0m";
	if($text === 'CLEAR') return $__NORMAL.$__CLEAR;
	if(empty($text) || !$text) return $__NORMAL;
	
	//Text color
	$aTextColor['black'] 	= 30; 
	$aTextColor['red'] 		= 31; 
	$aTextColor['green'] 	= 32; 
	$aTextColor['yellow'] 	= 33; 
	$aTextColor['blue'] 	= 34; 
	$aTextColor['magenta'] 	= 35; 
	$aTextColor['cyan'] 	= 36; 
	$aTextColor['white'] 	= 37; 
	
	//Background color
	$aBgColor['black'] 		= 40; 
	$aBgColor['red'] 		= 41; 
	$aBgColor['green'] 		= 42; 
	$aBgColor['yellow'] 	= 43; 
	$aBgColor['blue'] 		= 44; 
	$aBgColor['magenta'] 	= 45; 
	$aBgColor['cyan'] 		= 46; 
	$aBgColor['white'] 		= 47; 
	
	//style text
	$aStyle['none']			= 0; //normal
	$aStyle['bold']			= 1; //gras
	$aStyle['underline']	= 4; //souligné
	$aStyle['flashing']		= 5; //clignotant
	$aStyle['reverse']		= 7; //inversé
	
	$c = $__ESC.$__START;
	if($styleTxt && isset($aStyle[$styleTxt])) 		$a[] = $aStyle[$styleTxt];
	if($txtColor && isset($aTextColor[$txtColor]))  $a[] = $aTextColor[$txtColor];
	if($bgColor && isset($aBgColor[$bgColor]))		$a[] = $aBgColor[$bgColor];
	if(!is_array($a)) return $text;
	$c = $__ESC.$__START.join(';',$a).$__END;
	
	return $c.$text.$__NORMAL;
}

/**
* Permet de mettre en forme la police d'un texte par des balises
*
* ex : Ceci est un <c c=blue bg=white s=bold>TEST</c>
*
**/

function parseShColorTag($str){
	
	$tag = "/(<c[^>]*>)([^<]*)<\/c>/";
	$innerTag = "/([\w]+)=([\w]+)/";
	preg_match_all($tag,$str,$r);	
	
	if(!is_array($r[1])) return $str;
	foreach($r[1] as $k => $v){
		preg_match_all($innerTag,$v,$r2);
		if(!is_array($r2[1])) return $str;
		$c = $bg = $s = false;
		while(list($i,$value)=each($r2[1])){
			
			
			switch($value){
				
				case 'c':
					$c = $r2[2][$i];
					break;
					
				case 'bg':
					$bg = $r2[2][$i];
					break;
				
				case 's':
					$s = $r2[2][$i];
					break;
			}
			
		}
		
		$string = shColorText($r[2][$k], $c,$bg,$s);
		
		$str = str_replace($r[0][$k],$string,$str);
		
	}
	return $str;
	
}

 Conclusion

La capture d'écran est issue du code suivant:
if($params['help']){
$text = " \n<c s=bold>make.php</c> <c c=cyan s=bold>-[email|verbose|help] [value]</c>
<c c=magenta s=bold>Définition du script</c>
<c c=green s=bold>-email</c> ajoute a la constante ADMIN_MAIL d'autres destinataires ex :php make.php -email 'test@test.com,autre@test.com'
<c c=green s=bold>-verbose</c> affichage en sortie standart des etapes
<c c=green s=bold>-help</c> affiche l'aide
<c c=green s=bold>-help+</c> affiche les utilisations des class (gadjet;))
\n";
echo parseShColorTag($text);
exit();
}


 Historique

30 janvier 2008 15:16:30 :
orthographe

 Sources du même auteur

BASH: TABLEAUX EN FICHIER
Source avec Zip Source avec une capture BASH CSVSQL: PARSER UN FICHIER CSV AVEC DES COMMANDES SQL

 Sources de la même categorie

WORDPRESS : AFFICHER LE DÉBUT D'UN ARTICLE MAIS N'UTILISER E... par eakle
CRÉER PLUS FACILEMENT UNE CLASSE D'EXCEPTIONS par bebert2310
Source avec une capture SYNCHRONISATION DE DEUX DOSSIERS par dlasserre
Source avec Zip CSS DYNAMIQUE par Yanith
VÉRIFICATION D'UN EMAIL EN PHP (EXPRESSIONS RÉGULIÈRES/PCRE) par younesherlock

 Sources en rapport avec celle ci

GÉNÉRER UNE COULEUR DE POLICE COMPATIBLE AVEC UNE COULEUR DE... par BenSigmund
Source avec Zip PHP COLORSYS par Jayadeva
Source avec Zip Source avec une capture WEBSH : WEB SHELL POUR ADMINISTRER UN SERVEUR LINUX SANS CLI... par MadM@tt
Source avec Zip Source avec une capture CARTE DE L'EUROPE EN FONCTION DES VISITEURS par GillesWebmaster
Source avec Zip PARSING DES ARGUMENTS DE LA LIGNE DE COMMANDE par coucou747

Commentaires et avis

Commentaire de flottin le 30/01/2008 15:24:41 9/10

super script! Voilà un développeur qui pense aux autres!

Commentaire de malalam le 30/01/2008 19:49:05 administrateur CS 10/10

Hello,

boah...je ne vais même pas commenter le code côté prog :  c'est une idée très sympa, ça change très agréablement des codes habituels, c'est très utile, et de toute manière c'est bien foutu.

Commentaire de coucou747 le 31/01/2008 07:00:44 administrateur CS

c'est interessant, mais pourquoi tu n'as pas utilise : http://fr3.php.net/ncurses ?

Commentaire de kiki2sirom le 31/01/2008 10:44:56

@Coucou : peut-etre parce que c'est écrit ça sur le lien que tu donnes:

Warning
Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et, concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS ! Soyez-en conscient, et utilisez ce module à vos risques et périls.

très original en tout cas, ça change des scripts style "j'affiche un Hello World avec les pieds" ;-)

@+
kiki

Commentaire de gentilKiki le 31/01/2008 12:36:48

Salut, merci pour les comments;)
Pour répondre a coucou747: je ne connaissais pas du tout ncurses, j'ai visité le lien avec beaucoup d'interet (et des idées plein la tete), malheureusement, le module n'est pas implémenté a mon boulot (on a meme pas php5), du coup je reste un peu sur ma faim.
Sans rapport aucun, je suis étonné de voir le peu de ressource pour tout ce qui concerne les batchs php, bien que je comprenne le manque d'interet au niveau vélocité, ca reste néanmoins une approche plutot ....ludique;)

Commentaire de coucou747 le 31/01/2008 17:57:18 administrateur CS

kikisirom, meme si ce module est experimental, vu le cote populaire de ncurses, il ne disparaitra pas comme ca du jours au lendemain...

gentilkiki, ca s'explique parfaitement : nombre de gens penses que php n'est fait que pour faire des weberies, php a un comportement bizare pour certains trucs, php n'a rien d'un langage strict et n'a rien d'un langage fait pour le shell, contrairement au bash qui permet deja de tres nombreuses choses. si on regarde les concurents que php a pour developper des scripts en shell, on trouve python, perl (qui historiquement a plus sa place que php dans les lignes de commandes), le ruby, le tcl, etc...

on trouve beaucoup de langages concurents au php qui sont bien mieux consideres par bon nombre de personnes

on est pas beaucoup a utiliser le php pour faire autre chose que du web... le php a plus comme public les petits kikoo lols qui veulent faire leurs sites persos : Personal home page tool au depart, ne l'oublions pas

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Comment faire pour avoir les barre pour monter et descendre de couleur [ par arnaud ] Comment faire pour avoir les barre pour monter et descendre de couleurmerci Couleur IE d'acenceur [ par Niaphron ] Comment changer la couleur de l'acsenceur ?? IE Couleur des objets d'une page web [ par Farfadet ] Bon alors, c'est maintenant connu que la couleur des barres de défilements peuvent changer. Mais il est possible de changer le style d'autres objets. Couleur de mots cles dans une var [ par Arnaud ] Bonjour ke voulais savoir comment on fait pour changer la couleur des mots cles dans un var par ex print je voudrais qu'il soit bleu mais si je met // Probleme d'execution de script shell en remote. [ par coper23 ] Bonjour,Mon probleme:j'essaye d'executer un script sur une machine distante (en utilisant system() , `` ..etc) , mais ces fonctions attendent que le s Concaténation de nom de variables ! [ par fil ] Concaténation de nom de variables !bonjour j'ai un petit problème je voudrais creer des noms de variable dynamiquement dans une boucle :J'ai des varia Liste déroulante mettre en couleur la sélection [ par thedentiste ] Bonjour tlmvoila mon probleme j'essaye d'affecter différentes couleurs à chaque ligne sélectionner dans ma liste déroulante à sélection multiple.par e 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' Couleur tableau [ par BirD ] Hello, dans mon code, j'interroge une base de donnée, et ensuite j'affiche les données dans un tableau html. J'aimerais faire qu'une ligne sur deux ai OnMouseOver, OnMouseOut [ par WRom1 ] Bonjour,J'aimerai échanger la couleur de fond d'une cellule d'un tableau avec la coleur du texte, et cela au passage de la souris. J'utilise donc OnMo


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 2,340 sec (3)

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