Vous n'êtes pas connecté - 2 Membres connectés
Catégories
Graphisme
Flash (65)
Print (78)
Programmation
PHP (99)
ASP (2)
CSS (27)
Hardware
PC (42)
Mac (18)
Linux (5)
Divers
Blabla (301)
1145 Sujets
14794 Réponses
Programmation > PHP > Colorisation syntaxique
Colorisation syntaxique
Kiks les gnous,

je recherche une classe PHP5 de colorisation syntaxique qui pourrait gérer la colorisation des langages suivants:
- php
- mysql
- actionscript
- XML
- HTML

J'ai trouvé qques trucs intéressant du style syntaxhighlighter mais qui est en javascript ou GeSHi qui gère des tas de langages mais je n'ai pas besoin d'une usine à gaz, un truc très simple et dont les couleurs seraient paramétrables...

Merci
@++
Posté le 31 08 2008 à 15h00
tyler - Membre - www

Réponses - Colorisation syntaxique
Kiks again,

après qques recherches et divers essais je poste un petit feedback pour ceux que ça intéressent (qui se comptent par milliers au vue des réponses ^^ ):

Pour résumer il me fallait de quoi gérer la colorisation syntaxique du code mais aussi assurer le remplacement des balises BBcode.

Pour tout ça j'utilise donc:
StringParser_BBCode qui permet de convertir les balises BBcodes en code html (Ajout de balises personnalisée possible).
Un peu complexe à mettre en œuvre pour les fonctions avancées mais rien de méchant.

PHP_Highlight qui permet comme son nom l'indique de coloriser et mettre en forme du code PHP (tant pis pour les autres...). Il améliore simplement la colorisation de la fonction PHP highlight_string (ajout de liens vers la documentation PHP, etc...)

Si qqu'un a besoin de plus d'infos n'hésitez pas ;)

@++
Posté le 14 09 2008 à 17h55
tyler - Membre - www
 

<?
   
echo"Et dire que j'ai tout fais à la main moi :p parseur BB Code compris ^^";
?>
Posté le 15 09 2008 à 18h01
benzor - Administrateur - www
BZ t'es le plus fort... ^^
Posté le 15 09 2008 à 18h37
Amo - Membre - www
et surtout le moins feignant :)
Posté le 16 09 2008 à 09h27
Narno - Modérateur - www
 

<?
echo "Geek inside ^^";
echo 
"Bon j'avoue que j'ai été un peu feignant sur ce coup là, je ferai tout le reste à la main promis ^^";
?>
Posté le 18 09 2008 à 20h52
tyler - Membre - www
Rôôôô...je fais remonter un vieux vieux post.

En fait je me fight un peu avec StringParser_BBCode ( que je n'aime pas trop d'ailleurs ). Connaitriez vous un bon parser de BBcode ( en PHP of course ) ? Je n'ai rien trouvé d'intéressant ( c'est pas faute d'avoir cherché ).

Merci bôcoup ;)
Posté le 20 11 2009 à 13h18
tyler - Membre - www
 aller c'est cadeau je te file mon parser... par contre je l'ai fais il y a pas mal de temps y'a surement moyen de l'améliorer ^^


<?
Function CallBack_Interpreter_IMG($img)
{
    if(
$tabSize = @GetImageSize($img[1]))
    {
        if(
$tabSize[0] > 450$width 450; else $width $tabSize[0];
        Return 
"<a href='".$img[1]."' target='_blank'><img src='".$img[1]."' class='post-img' width=".$width." alt='".$img[1]."' align='absmiddle' border=0></a>";
    }
    else
    {
         Return 
"<span class="texteBleu">image non valide ou déplacée : [".$img[1]."]</span>";        
    }
}

Function 
CallBack_LienMembre($pseudo)
{
    if(!empty(
$pseudo[1]))
    {
        
$conn ConnectDB();
        
$Req "SELECT ME_id FROM membre WHERE ME_pseudo='".$pseudo[1]."'";
        
$Res MySQL_Query($Req,$conn) Or die(MySQL_Error());
        
$Nb MySQL_NumRows($Res);
        if(
$Nb==1) Return "<a href="http://".$pseudo[1].".benzor.com" target="_self">".$pseudo[1]."</a>"; else Return "<span class="texteBleu">Membre inexistant : [".$pseudo[1]."]</span>";
        
ConnexionFerme($conn);
    }
}

Function 
CallBack_LienNom($lien)
{
    if(
Substr($lien[1],0,7) !="http://")
    {
        
$lien[1] = "http://".$lien[1];
        
$lien[3] = MyTruncate($lien[3],25);
        Return 
"<a href="".$lien[1]."" target="_blank" title="".$lien[1]."">".$lien[3]."</a>";
    }
    else
    {
        
$lien[2] = MyTruncate($lien[2],25);
        Return 
"<a href="".$lien[1]."" target="_blank" title="".$lien[1]."">".$lien[2]."</a>";
    }
}

Function 
CallBack_Lien($lien)
{
    if(
Substr($lien[1],0,7) !="http://")
    {
        
$lien[1] = "http://".$lien[1];
    }
    Return 
"<a href="".$lien[1]."" target="_blank" title="".$lien[1]."">".TronquerLien($lien[1],25)."</a>";
}

Function 
CallBack_Email($email)
{
    
$tabEmail CrypterEmail($email[1]);
    Return  
"<a href="javascript:MailBz('".$tabEmail[0]."','".$tabEmail[1]."');">".$tabEmail[5]."@NoSpam</a>";
}

Function 
ColorPhpCode($Code) { 
    
    
$Color['html']    = '#339933'
    
$Color['comment'] = '#cc66cc'
    
$Color['default'] = '#336699'
    
$Color['keyword'] = '#ff8000'
    
$Color['string']  = '#999999'
    
$ret highlight_string($Codetrue);    
    
$in = array( 
    
'`</?code>`i'
    
'`<(?:font color="|span style="color: )' ini_get('highlight.html')    . '">(.+?)</(?:font|span)>`si'
    
'`<(?:font color="|span style="color: )' ini_get('highlight.comment') . '">(.+?)</(?:font|span)>`si'
    
'`<(?:font color="|span style="color: )' ini_get('highlight.default') . '">(.+?)</(?:font|span)>`si'
    
'`<(?:font color="|span style="color: )' ini_get('highlight.keyword') . '">(.+?)</(?:font|span)>`si'
    
'`<(?:font color="|span style="color: )' ini_get('highlight.string')  . '">(.+?)</(?:font|span)>`si'
    
'` `si' 
    
); 

    
$out = array( 
    
''
    
'<span style="color:' $Color['html']       . '">$1</span>'
    
'<span style="color:' $Color['comment']       . '">$1</span>'
    
'<span style="color:' $Color['default']       . '">$1</span>'
    
'<span style="color:' $Color['keyword']       . '">$1</span>'
    
'<span style="color:' $Color['string' ]       . '">$1</span>'
    
' ' 
    
); 
    Return 
"<div class='layerCode'>".preg_replace($in$out$ret)."</div>"



Function 
InterpreterCouleur($couleur)
{
    Return 
"<font color='#".$couleur."'>";
}

Function 
Interpreter_Styles($chaine)
{
    
$chaine preg_replace("([#([0-9a-fA-F]{6})](.+?)[/#])",'<font color="#$1">$2</font>',$chaine); // Font color
    
$chaine preg_replace("([b](.+?)[/b])",'<b>$1</b>',$chaine); // Bold
    
$chaine preg_replace("([i](.+?)[/i])",'<i>$1</i>',$chaine); // Italique
    
$chaine preg_replace("([u](.+?)[/u])",'<u>$1</u>',$chaine); // Underline
    
$chaine preg_replace("([s](.+?)[/s])",'<s>$1</s>',$chaine); // Barré
    
$chaine preg_replace("([texteGris](.+?)[/texteGris])",'<span class="texteGris">$1</span>',$chaine); // Footer Notifs internes
    
$chaine preg_replace("([center](.+?)[/center])",'<center>$1</center>',$chaine); // Centré
    
$chaine preg_replace("([li](.+?)[/li])","<img src="http://www.benzor.com/images/puce.gif" Style="margin-right:2px;">$1",$chaine); // Puce
    
$chaine preg_replace_callback("([M=(.+?)])","CallBack_LienMembre",$chaine); // Liens membre    
    /* Gestion des URLS */
    
$chaine preg_replace_callback("#[url=([w]+?://[w#$%&~/.-;:=,?@[]+]*?)]([^?nrt].*?)[/url]#is","CallBack_LienNom",$chaine);
    
$chaine preg_replace_callback("#[url=((www|ftp).[w#$%&~/.-;:=,?@[]+]*?)]([^?nrt].*?)[/url]#is","CallBack_LienNom",$chaine);
    
$chaine preg_replace_callback("#[url]([w]+?://([w#$%&~/.-;:=,?@]+]+|[(?!url=))*?)[/url]#is","CallBack_Lien",$chaine);
    
$chaine preg_replace_callback("#[url]((www|ftp).([w#$%&~/.-;:=,?@]+]+|[(?!url=))*?)[/url]#is","CallBack_Lien",$chaine);
    
/* Gestion des emails */
    
$chaine preg_replace_callback("#[email]([a-z0-9&-_.]+?@[w-]+.([w-.]+.)?[w]+)[/email]#si","CallBack_Email",$chaine);
    
/* Gestion des images */
    
$chaine preg_replace_callback("#[img]([^?](?:[^[]+|[(?!url))*?)[/img]#i","CallBack_Interpreter_IMG",$chaine);
    Return 
$chaine;
}

Function 
VerifStyle($chaine)
{
    if(
preg_match("#([img](.+?))#is",$chaine)) Return true;
    else if(
preg_match("#([M=(.+?))#is",$chaine)) Return true;
    else if(
preg_match("#([url=(.+?))#is",$chaine)) Return true;
    else if(
preg_match("#([url](.+?))#is",$chaine)) Return true;
    else if(
preg_match("#([email](.+?))#is",$chaine)) Return true;
    else Return 
false;
}

?>
Posté le 20 11 2009 à 15h46
benzor - Administrateur - www
 

<?

Function Afficher($chaine,$longmax)
{
    
$nbCode preg_match_all("#(.+?)[ code ](.+?)[ /code ]#is"," ".$chaine,$tbCode);
    if(
$nbCode 0)
    {
        For(
$i=0$i $nbCode$i++  )
        {
            
$Retour .= ParseChaine($tbCode[1][$i],$longmax).ColorPhpCode($tbCode[2][$i]);
        }
        
$Retour .= SubStr(Strrchr($chaine"[ /code ]"),7);
    }
    else
    {
        
$Retour ParseChaine($chaine,$longmax);
    }
    Return 
$Retour;
}

Function 
ParseChaine($chaine,$longmax)
{
    if(!empty(
$longmax))    $chaine Morceler($chaine,$longmax);
    
$chaine ClearString($chaine);    
    
$chaine Interpreter_Smile($chaine);
    
$chaine Interpreter_Styles($chaine);
    return 
$chaine;
}

?>
à adapter biensur :)
Posté le 20 11 2009 à 15h46
benzor - Administrateur - www
Great, great, great...docteur Benz ;)
Je vais regarder tout ça de plus près...je te ferai un retour la dessus qd ce sera testé. M'a tout l'air fort bien.

@++
Posté le 20 11 2009 à 16h14
tyler - Membre - www
Sujets PHP
<< 1 2 3 ... 9 10 >>
[RESOLU] (...)
Auteur : Pierrot
Posté le 25 06 2010 à 17h21
8 Réponses (Nouveau sujet)
Sujet visité 1318 fois
[RESOLU] Module de (...)
Auteur : o0o
Posté le 30 06 2010 à 14h30
2 Réponses (Nouveau sujet)
Sujet visité 474 fois
GD Library et taille (...)
Auteur : askhanir
Posté le 20 06 2010 à 08h54
5 Réponses (Nouveau sujet)
Sujet visité 975 fois
Marque Blanche
Auteur : benzor
Posté le 05 05 2010 à 15h40
12 Réponses (Nouveau sujet)
Sujet visité 1446 fois
Pseudo_frame nav
Auteur : geoffroy
Posté le 21 04 2010 à 09h39
18 Réponses (Nouveau sujet)
Sujet visité 995 fois
bbcode [RESOLU (...)
Auteur : geoffroy
Posté le 12 04 2010 à 23h00
13 Réponses (Nouveau sujet)
Sujet visité 1269 fois
tri de tableau
Auteur : ju2x
Posté le 30 03 2010 à 15h11
11 Réponses (Nouveau sujet)
Sujet visité 1453 fois
3 tables, 1 seule (...)
Auteur : mob
Posté le 10 02 2010 à 11h38
12 Réponses (Nouveau sujet)
Sujet visité 1993 fois
image not found
Auteur : doss
Posté le 07 01 2010 à 09h36
17 Réponses (Nouveau sujet)
Sujet visité 2493 fois
Un backend tous (...)
Auteur : RGSONE
Posté le 15 01 2010 à 21h19
14 Réponses (Nouveau sujet)
Sujet visité 2332 fois
<< 1 2 3 ... 9 10 >>
Mentions légales   -   Crédits   -   Nous contacter   -   © Benzor 2006