Accueil > > > COLORATION PHP, CSS, HTML, JAVASCRIPT
COLORATION PHP, CSS, HTML, JAVASCRIPT
Information sur la source
Description
Je crois que le titre en dis déjà pas mal, c'est un script de coloration syntaxique multi-language ( actuellement 4 ). Pour le faire fonctionner : Télécharger le zip et lancer le fichier html, coller un code source dans le textarea, puis sélectionner votre type de coloration et enfin, cliquer sur le bouton magique 'colore'. Pour lancer la coloration a partir d'une de vos page html ou script, => <script type="text/javascript"> <!--// ColoreCode(CodeSource,ObjetDest,Coloration) //--> </script> CodeSource => Un simple texte ( code source d'une page html par ex. ) ObjetDest => L'élément de destination qui recevra le code source coloré ( document.getElementById('IdDuneDiv') par ex. ) Coloration => 0 => Colore en fonction du tag détecter ( html + CSS + Javascript + PHP ) ( plus long ) 1 => Coloration HTML 2 => Coloration CSS 3 => Coloration JavaScript 4 => Coloration PHP Les Styles CSS sont dans le fichier colore_code.html Dite moi ce que vous en pensez ^^ Note : Il exist encore quelque bug qui seront corrigé ;)
Source
- // Script Coloration Syntaxique HTML, CSS, JavaScript, PHP
-
- function Init() {
- ColoreCode();
- }
-
- /*
- * Colorer le code en (SelColore) :
- * 0 -> les 4 languages confondu ( effectué s'il croise leur tag correspondant )
- * 1 -> HTML
- * 2 -> CSS
- * 3 -> JavaScript
- * 4 -> PHP
- *
- * Numéroter les lignes (Num):
- * true -> numérote les lignes + souligne la ligne au passage de la sourie
- * false -> ne numérote pas les lignes
- *
- * Src => texte source
- * Dest => l'objet de destination prêt a recevoir le code Html
- *
- */
-
- function ColoreCode(Src, Dest, SelColore, Num) {
-
- var tms = new Date();
- var tpsDep = tms.getTime(); /* date en ms */
-
- parent.NbLn = 0; /* Compteur de Ligne */
-
- var text = ColorSrc(Src, SelColore, Num);
- if (Num) {
- text = '<table cellpadding="0" cellspacing="0" class="CodeSource">'+addNumLn(text)+'</table>';
- } else {
- text = '<code id="CodeSource" class="CodeSource">'+text+'</code>';
- }
-
- Dest.innerHTML = text;
-
- tms = new Date();
- var tpsFin = tms.getTime();
-
- /** Commenter les 4 lignes si vous n'en voulez pas **/
- try {
- document.getElementById('CODE_TimeStamp').innerHTML = 'Temps d\éxécution : '+((tpsFin-tpsDep)/1000)+' Secondes pour '+parent.NbLn+' Lignes.';
- } catch(e) {
- alert('Temps d\éxécution : '+((tpsFin-tpsDep)/1000)+' Secondes\r\nNombre de ligne : '+parent.NbLn);
- }
-
- return false;
-
- }
-
- function ColorSrc(s, Sel, Num) {
-
- t = RemoveChar(s);
-
- switch(Sel) {
- case 0:
- t = t.replace(/(<style.*?>)(.*?)(<\/style>)/gim, function(st) { return '<CODE_CSS>'+ColorCSS(st)+'</CODE_CSS>';} ); // style CSS
- t = t.replace(/(<script.*?>)(.*?)(<\/script>)/gi, function(st) { return '<CODE_JS>'+ColorJSC(st)+'</CODE_JS>';} ); // javascript
- t = t.replace(/(<\?.*?\?>)/gi, function(st) { return '<CODE_PHP>'+ColorPHP(st)+'</CODE_PHP>';} ); // Code PHP
- t = t.replace(/(<html.*?<\/html>)/gi, function(st) { return '<CODE_HTM>'+ColorHTML(st)+'</CODE_HTM>';} ); // html
- t = t.replace(/<(CODE_HTM|CODE_CSS|CODE_JS|CODE_CSS|CODE_PHP)>/g, '<span class="$1">');
- t = t.replace(/<\/(CODE_HTM|CODE_CSS|CODE_JS|CODE_CSS|CODE_PHP)>/g, '</span>');
- break;
- case 1:
- t = '<span class="CODE_HTM">'+ColorHTML(t)+'</span>';
- break;
- case 2:
- t = '<span class="CODE_CSS">'+ColorCSS(t)+'</span>';
- break;
- case 3:
- t = '<span class="CODE_JS">'+ColorJSC(t)+'</span>';
- break;
- case 4:
- t = '<span class="CODE_PHP">'+ColorPHP(t)+'</span>';
- break;
- }
-
- t = CleanTag(t);
-
- t = ReplaceChar(t);
-
- return t;
- }
-
- /*** Coloration Javascript ***/
- function ColorJSC(s) {
-
- /* Expression Régulière */
- s = s.replace(/(\()(\/)([^\/<>]*?)(\/)([gim\)]+)/g, '$1<b>$2$3$4</b>$5'); // ça bug ...
-
- /* Mots réservé */
- s = s.replace(/\b(window|document|layer|self|opener|location|body|parent|screen)\b([\.\(\)])/gi, '<i>$1</i>$2');
- s = s.replace(/(\.)\b(getElementById|getElementsByTagName|getElementsByName|item|forms|element)\b([\.\[\(])/gi, '$1<em>$2</em>$3');
- s = s.replace(/\b(alert|prompt|focus|blur|open|close|find|event|navigator|submit|scroll|clearTimeout|clearInterval)\b/gi, '<big>$1</big>');
- s = s.replace(/(\.)\b(designMode|keyCode|charCode|select|text|clear|appName|value|innerHTML|innerText|match|replace|search|exec|test|write|writeln|length|substr|substring|indexOf|lastIndexOf|getSelection|left|right|down|top|width|height|offsetLeft|offsetRight|offsetTop|offsetDown|offsetWidth|offsetHeight|style|value|escape|unescape|Object|valueOf|String|toString|setTimeout|setInterval|Math|parseInt|parse|parseFloat|Array|isNaN|name|id|status|Number|addEventListener|onmouseup|onmousedown|onclick|onmouseover|onmouseout|onkeypress|onkeydown|onkeyup|onload|onunload|onblur|onfocus|onsubmit|onchange|execCommand|pasteHTML|selection|createRange|getRangeAt|createTextRange|insertNode|createElement|appendChild|removeChild|firstChild|rangeCount|childNodes|nodeType|parentElement|setAttribute|getAttribute|insertBefore|addRange|removeAllRanges|parentNode|cloneNode|nodeValue|startContanier|deleteContents|toLowerCase|toUpperCase|tagName|button|which|type)\b/gi, '$1<u>$2</u>');
-
- s = s.replace(/(\.?)\b(setTimeout|setInterval|Math|parseInt|parse|parseFloat|Array|Number|eval|RegExp)\b/gi, '$1<u>$2</u>');
-
- s = s.replace(/\b(for|if|else|switch|case|break|default|return|while|do|try|catch|throws|int|boolean|label|goto)\b/gi, '<small>$1</small>');
- s = s.replace(/\b(function|class|var|new)\b/gi, '<var>$1</var>');
-
- /* Décimaux */
- s = s.replace(/(=|\+|\*|\-|\[|\(|,|;|\s)(\s?)([\d]+)/g, '$1$2<sup>$3</sup>');
-
- // Booléen
- s = s.replace(/\b(null|true|false)\b/gi, '<s>$1</s>');
-
- // quotes double
- s = s.replace(/([\s=;\:\+\.\(\[,])(")([^"]*?)(")/g, '$1<strike>$2$3$4</strike>');
-
- // quotes simple
- s = s.replace(/([\s=;\:\+\.\(\[,])(')([^']*?)(')/g, '$1<strike>$2$3$4</strike>');
-
- // &&, ||, <=, >=, !=, += etc ...
- s = s.replace(/(&&||||\!=|==|\+=|<=|>=|\[|\]|\{|\}|\(|\))/gi, '<s>$1</s>');
-
- // Commentaires
- s = s.replace(/(\/\*)(.*?)(\*\/)/g, '<cite>$1$2$3</cite>');
- s = s.replace(/([^:])(\/\/.*?)(<br \/>)/g, '$1<cite>$2</cite>$3');
-
- return s;
- }
-
- /*** Coloration CSS ***/
- function ColorCSS(s) {
-
- /* class/tag/id:évenement */
- s = s.replace(/([A-Za-z0-9\:_\-, \.#]+)(\{)/g, function(st) { return st.replace(/([A-Za-z0-9_-]+)(\:?)([A-Za-z0-9_-]*)/g, '<s>$1</s>$2<em>$3</em>'); });
- /* Attribut:value; */
- s = s.replace(/(\s?)([A-Za-z0-9_-]+)(:)([^;\/]+?)(\s?)(;)/gi, '$1<u>$2</u>$3<i>$4</i>$5$6');
-
- /* Chaine de caractère */
- s = s.replace(/(")([^"]*?)(")/g, '<strike>$1$2$3</strike>');
- s = s.replace(/(')([^']*?)(')/g, '<strike>$1$2$3</strike>');
-
- /* Commentaire */
- s = s.replace(/(\/\*)(.*?)(\*\/)/g, function(st) { st = CleanTag(st); return '<cite>'+st+'</cite>'; });
-
- return s;
- }
-
- /*** Coloration (x)HTLM / XML ***/
- function ColorHTML(s) {
- //if (s.
- // attributs="value" ( double quote )
- s = s.replace(/([A-Za-z_-]+=)(")([^"<>]*?)(")/g, '<i>$1</i><s>$2$3$4</s>');
- // attributs='value' ( simple quote )
- s = s.replace(/([A-Za-z_-]+=)(')([^'<>]*?)(')/g, '<i>$1</i><s>$2$3$4</s>');
-
- // tags
- s = s.replace(/(<)(\/?)([A-Za-z0-9]+)/g, '$1$2<u>$3</u>');
- // doctype
- s = s.replace(/(<!doctype)([^|]*)(>)/gi, '<span class="HTM_Doc">$1$2$3</span>');
- // xml
- s = s.replace(/(<\?xml)([^|]*)(>)/gi, '<span class="HTM_Xml">$1$2$3</span>');
-
- // commentaires
- s = s.replace(/(<\!\-\-.*?\-\->)/gi, function(h) { h = CleanTag(h);
- h = h.replace(/\"/g, '"');
- h = h.replace(/\'/g, ''');
- return '<cite>'+h+'</cite>'; });
-
- return s;
- }
-
- /*** Coloration PHP ***/
- function ColorPHP(s) {
-
- s = s.replace(/<br \/>/g, '\n');
- s = s.replace(/<\S[^><]*?>/g, '');
- s = s.replace(/\n/g, '<br \/>');
-
- // tag <?, <?php, ?>
- s = s.replace(/(<\?php|<\?|\?>)/g, '<big>$1</big>');
-
- // Boucle, Condition, et autres ...
- s = s.replace(/\b(if|while|for|do|else|endif|endfor|endwhile|endswitch|case|return|break|case|default|echo|print_r|printf|print|exit|die|foreach|throw|try|catch)\b(\s?)/gi, '<small>$1</small>$2');
-
- // du type function truc () , class truc(), var $machin
- s = s.replace(/\b(function|var|class|global|new|static|extends|public|private)\b/g, '<i>$1</i>');
-
- // du type mysql_connect(), fopen() ...
- s = s.replace(/([A-Za-z0-9_]+)([\s]*)(\(|\{)/g, '<u>$1</u>$2$3');
-
- // les variables ( $truc );
- s = s.replace(/(\$[A-Za-z0-9_\-]+)/g, '<var>$1</var>');
- s = s.replace(/\b(this)\b(\->)/g, '<var>$&1-></var>');
-
- // les décimaux
- s = s.replace(/(=|\+|\*|\-|\[|\(| |,|;)([\d]+)/g, '$1<sup>$2</sup>');
-
- // Booléen, et caractère divers
- s = s.replace(/\b(false|true|null|and|or|xor|as)\b/g, '<em>$1</em>');
-
- s = s.replace(/(==|\!=|&&||||<=|>=|\(|\[|\]|\)|\{|\})/g, '<em>$1</em>');
-
- // Expression régulière
- s = s.replace(/(\(|=)(#|@)(.*?)(#|@)/g, '$1<b>$2$3$4</b>');
-
- // quotes double
- //s = s.replace(/(\s|\[|\(|=|\.|,)(")([^"]*)(")/g, '$1<strike>$2$3$4</strike>');
- s = s.replace(/(")([^"]*)(")/g, '<strike>$1$2$3</strike>');
- // quotes simple
- //s = s.replace(/(\s|\[|\(|=|\.|,)(')([^']*)(')/g, '$1<strike>$2$3$4</strike>');
- s = s.replace(/(')([^']*)(')/g, '<strike>$1$2$3</strike>');
- // Commentaires
- s = s.replace(/(\/\*.*?\*\/)/g, '<cite>$1</cite>');
- s = s.replace(/(\s|<br \/>)(\/\/|#)(.*?)(<br \/>)/g, '$1<cite>$2$3</cite>$4');
-
- return s;
- }
-
- function addNumLn(s) {
-
- parent.TagAdd = parent.TagEnd = parent.Class = ''; /** récupère la classe des tags span croisé au passage **/
- parent.NbLn = 0; /** compteur de ligne **/
-
- Ln = s+'<br />';
- Ln = Ln.replace(/(.*?<br \/>)/g, function(st) {
-
- parent.NbLn++;
- endTag = false;
-
- if (st.match(/<span class="[^"]*?">/)) {
- parent.Class = st.match(/<span class="([^"]*?)">/)[st.match(/<span class="([^"]*?)">/).length-1];
- st = st.replace(/<span class="[^"]*?">/g, ''); /** après récupération de la class, on efface le tag inutile **/
- } else if (st.indexOf('</span>') != -1) {
- parent.Class = 'CODE_HTM';
- } else if (st.indexOf('<cite>') != -1 && st.indexOf('</cite>') == -1) { /** corrige un p'tit bug de commentaire multi-ligne **/
- parent.TagAdd = '<cite>';
- parent.TagEnd = '</cite>';
- } else if (st.indexOf('</cite>') != -1) { /** met fin au commentaire multi-ligne **/
- endTag = true;
- }
-
- st = '<tr><td class="CODE_NumLn">'+parent.NbLn+'</td><td class="'+parent.Class+'">'+parent.TagAdd+st+parent.TagEnd+'</td></tr>';
-
- if (endTag) {
- parent.TagAdd = '';
- parent.TagEnd = '';
- }
-
- return st;
-
- });
- Ln = Ln.replace(/<\/span>/g, '');
- return Ln;
- }
-
- /** Supprime les Tags HTML inutile et/ou en trop **/
- function CleanTag(s) {
- Clean = function(st1) {
- st1 = st1.replace(/<br \/>/gi, '\n');
- st1 = st1.replace(/<\S[^><]*?>/gm, '')
- st1 = st1.replace(/\n/gm, '<br />');
- return st1;
- }
-
- s = s.replace(/(<strike>.*?<\/strike>)/gi, function(st) { return '<strike>'+Clean(st)+'</strike>'; } );
- s = s.replace(/(<b>.*?<\/b>)/gi, function(st) { return '<b>'+Clean(st)+'</b>'; } );
- s = s.replace(/(<cite>.*?<\/cite>)/gi, function(st) { return '<cite>'+Clean(st)+'</cite>'; } );
-
- return s
- }
-
- /** Encode les caractères pouvant géner le parseur **/
- function RemoveChar(s) {
- Remove = function(St) {
- St = St.replace(/</g, '‹');
- St = St.replace(/>/g, '›');
- return St;
- }
-
- s = s.replace(/&/gm, '&');
- s = s.replace(/\|/gm, '|');
- s = s.replace(/\\\//gm, '\\/');
- s = s.replace(/\\\\/gm, '\\');
- s = s.replace(/\\/gm, '\\');
- s = s.replace(/\\'/gm, '\\'');
- s = s.replace(/\\"/gm, '\\"');
- s = s.replace(/</gm, '<');
- s = s.replace(/>/gm, '>');
- s = s.replace(/\t/gm, ' ');
- s = s.replace(/\r?\n/g, function(t) { parent.NbLn++; return '<br />'; });
-
- s = s.replace(/(\s\/\*.*?\*\/\s)/g, function(st) { st = st.replace(/\'/g, '\\''); st = st.replace(/\"/g, '\\"'); return Remove(st); });
- s = s.replace(/<br \/>\/\*.*?\*\/<br \/>/g, function(st) { st = st.replace(/\'/g, '\\''); st = st.replace(/\"/g, '\\"'); return Remove(st); });
- s = s.replace(/(\s\/\/)(.*?<br \/>)/g, function(st) { st = st.replace(/\'/g, '''); st = st.replace(/\"/g, '"'); return Remove(st); });
- s = s.replace(/(<br \/>\/\/)(.*?<br \/>)/g, function(st) { st = st.replace(/\'/g, '''); st = st.replace(/\"/g, '"'); return Remove(st); });
- s = s.replace(/([\s=;\:\+\.\(\[,])("[^"]*?")/g, function(st) { st = st.replace(/\'/g, '''); return Remove(st); });
- s = s.replace(/([\s=;\:\+\.\(\[,])('[^']*?')/g, function(st) { st = st.replace(/\"/g, '"'); return Remove(st); });
- s = s.replace(/(\(\/[^\/]*?\/)/g, function(st) { st = st.replace(/'/g, '''); st = st.replace(/"/g, '"'); return Remove(st); });
-
- return s;
-
- }
-
- /** Décode les caractères nécessaire dernièrement encodé **/
- function ReplaceChar(s) {
- Replace = function(St) {
- St = St.replace(/‹/g, '<');
- St = St.replace(/›/g, '>');
- St = St.replace(/"/g, '"');
- St = St.replace(/'/g, "'");
- St = St.replace(/ /g, " ");
- St = St.replace(/> /g, "> ");
- return St;
- }
-
- return Replace(s);
-
- }
// Script Coloration Syntaxique HTML, CSS, JavaScript, PHP
function Init() {
ColoreCode();
}
/*
* Colorer le code en (SelColore) :
* 0 -> les 4 languages confondu ( effectué s'il croise leur tag correspondant )
* 1 -> HTML
* 2 -> CSS
* 3 -> JavaScript
* 4 -> PHP
*
* Numéroter les lignes (Num):
* true -> numérote les lignes + souligne la ligne au passage de la sourie
* false -> ne numérote pas les lignes
*
* Src => texte source
* Dest => l'objet de destination prêt a recevoir le code Html
*
*/
function ColoreCode(Src, Dest, SelColore, Num) {
var tms = new Date();
var tpsDep = tms.getTime(); /* date en ms */
parent.NbLn = 0; /* Compteur de Ligne */
var text = ColorSrc(Src, SelColore, Num);
if (Num) {
text = '<table cellpadding="0" cellspacing="0" class="CodeSource">'+addNumLn(text)+'</table>';
} else {
text = '<code id="CodeSource" class="CodeSource">'+text+'</code>';
}
Dest.innerHTML = text;
tms = new Date();
var tpsFin = tms.getTime();
/** Commenter les 4 lignes si vous n'en voulez pas **/
try {
document.getElementById('CODE_TimeStamp').innerHTML = 'Temps d\éxécution : '+((tpsFin-tpsDep)/1000)+' Secondes pour '+parent.NbLn+' Lignes.';
} catch(e) {
alert('Temps d\éxécution : '+((tpsFin-tpsDep)/1000)+' Secondes\r\nNombre de ligne : '+parent.NbLn);
}
return false;
}
function ColorSrc(s, Sel, Num) {
t = RemoveChar(s);
switch(Sel) {
case 0:
t = t.replace(/(<style.*?>)(.*?)(<\/style>)/gim, function(st) { return '<CODE_CSS>'+ColorCSS(st)+'</CODE_CSS>';} ); // style CSS
t = t.replace(/(<script.*?>)(.*?)(<\/script>)/gi, function(st) { return '<CODE_JS>'+ColorJSC(st)+'</CODE_JS>';} ); // javascript
t = t.replace(/(<\?.*?\?>)/gi, function(st) { return '<CODE_PHP>'+ColorPHP(st)+'</CODE_PHP>';} ); // Code PHP
t = t.replace(/(<html.*?<\/html>)/gi, function(st) { return '<CODE_HTM>'+ColorHTML(st)+'</CODE_HTM>';} ); // html
t = t.replace(/<(CODE_HTM|CODE_CSS|CODE_JS|CODE_CSS|CODE_PHP)>/g, '<span class="$1">');
t = t.replace(/<\/(CODE_HTM|CODE_CSS|CODE_JS|CODE_CSS|CODE_PHP)>/g, '</span>');
break;
case 1:
t = '<span class="CODE_HTM">'+ColorHTML(t)+'</span>';
break;
case 2:
t = '<span class="CODE_CSS">'+ColorCSS(t)+'</span>';
break;
case 3:
t = '<span class="CODE_JS">'+ColorJSC(t)+'</span>';
break;
case 4:
t = '<span class="CODE_PHP">'+ColorPHP(t)+'</span>';
break;
}
t = CleanTag(t);
t = ReplaceChar(t);
return t;
}
/*** Coloration Javascript ***/
function ColorJSC(s) {
/* Expression Régulière */
s = s.replace(/(\()(\/)([^\/<>]*?)(\/)([gim\)]+)/g, '$1<b>$2$3$4</b>$5'); // ça bug ...
/* Mots réservé */
s = s.replace(/\b(window|document|layer|self|opener|location|body|parent|screen)\b([\.\(\)])/gi, '<i>$1</i>$2');
s = s.replace(/(\.)\b(getElementById|getElementsByTagName|getElementsByName|item|forms|element)\b([\.\[\(])/gi, '$1<em>$2</em>$3');
s = s.replace(/\b(alert|prompt|focus|blur|open|close|find|event|navigator|submit|scroll|clearTimeout|clearInterval)\b/gi, '<big>$1</big>');
s = s.replace(/(\.)\b(designMode|keyCode|charCode|select|text|clear|appName|value|innerHTML|innerText|match|replace|search|exec|test|write|writeln|length|substr|substring|indexOf|lastIndexOf|getSelection|left|right|down|top|width|height|offsetLeft|offsetRight|offsetTop|offsetDown|offsetWidth|offsetHeight|style|value|escape|unescape|Object|valueOf|String|toString|setTimeout|setInterval|Math|parseInt|parse|parseFloat|Array|isNaN|name|id|status|Number|addEventListener|onmouseup|onmousedown|onclick|onmouseover|onmouseout|onkeypress|onkeydown|onkeyup|onload|onunload|onblur|onfocus|onsubmit|onchange|execCommand|pasteHTML|selection|createRange|getRangeAt|createTextRange|insertNode|createElement|appendChild|removeChild|firstChild|rangeCount|childNodes|nodeType|parentElement|setAttribute|getAttribute|insertBefore|addRange|removeAllRanges|parentNode|cloneNode|nodeValue|startContanier|deleteContents|toLowerCase|toUpperCase|tagName|button|which|type)\b/gi, '$1<u>$2</u>');
s = s.replace(/(\.?)\b(setTimeout|setInterval|Math|parseInt|parse|parseFloat|Array|Number|eval|RegExp)\b/gi, '$1<u>$2</u>');
s = s.replace(/\b(for|if|else|switch|case|break|default|return|while|do|try|catch|throws|int|boolean|label|goto)\b/gi, '<small>$1</small>');
s = s.replace(/\b(function|class|var|new)\b/gi, '<var>$1</var>');
/* Décimaux */
s = s.replace(/(=|\+|\*|\-|\[|\(|,|;|\s)(\s?)([\d]+)/g, '$1$2<sup>$3</sup>');
// Booléen
s = s.replace(/\b(null|true|false)\b/gi, '<s>$1</s>');
// quotes double
s = s.replace(/([\s=;\:\+\.\(\[,])(")([^"]*?)(")/g, '$1<strike>$2$3$4</strike>');
// quotes simple
s = s.replace(/([\s=;\:\+\.\(\[,])(')([^']*?)(')/g, '$1<strike>$2$3$4</strike>');
// &&, ||, <=, >=, !=, += etc ...
s = s.replace(/(&&||||\!=|==|\+=|<=|>=|\[|\]|\{|\}|\(|\))/gi, '<s>$1</s>');
// Commentaires
s = s.replace(/(\/\*)(.*?)(\*\/)/g, '<cite>$1$2$3</cite>');
s = s.replace(/([^:])(\/\/.*?)(<br \/>)/g, '$1<cite>$2</cite>$3');
return s;
}
/*** Coloration CSS ***/
function ColorCSS(s) {
/* class/tag/id:évenement */
s = s.replace(/([A-Za-z0-9\:_\-, \.#]+)(\{)/g, function(st) { return st.replace(/([A-Za-z0-9_-]+)(\:?)([A-Za-z0-9_-]*)/g, '<s>$1</s>$2<em>$3</em>'); });
/* Attribut:value; */
s = s.replace(/(\s?)([A-Za-z0-9_-]+)(:)([^;\/]+?)(\s?)(;)/gi, '$1<u>$2</u>$3<i>$4</i>$5$6');
/* Chaine de caractère */
s = s.replace(/(")([^"]*?)(")/g, '<strike>$1$2$3</strike>');
s = s.replace(/(')([^']*?)(')/g, '<strike>$1$2$3</strike>');
/* Commentaire */
s = s.replace(/(\/\*)(.*?)(\*\/)/g, function(st) { st = CleanTag(st); return '<cite>'+st+'</cite>'; });
return s;
}
/*** Coloration (x)HTLM / XML ***/
function ColorHTML(s) {
//if (s.
// attributs="value" ( double quote )
s = s.replace(/([A-Za-z_-]+=)(")([^"<>]*?)(")/g, '<i>$1</i><s>$2$3$4</s>');
// attributs='value' ( simple quote )
s = s.replace(/([A-Za-z_-]+=)(')([^'<>]*?)(')/g, '<i>$1</i><s>$2$3$4</s>');
// tags
s = s.replace(/(<)(\/?)([A-Za-z0-9]+)/g, '$1$2<u>$3</u>');
// doctype
s = s.replace(/(<!doctype)([^|]*)(>)/gi, '<span class="HTM_Doc">$1$2$3</span>');
// xml
s = s.replace(/(<\?xml)([^|]*)(>)/gi, '<span class="HTM_Xml">$1$2$3</span>');
// commentaires
s = s.replace(/(<\!\-\-.*?\-\->)/gi, function(h) { h = CleanTag(h);
h = h.replace(/\"/g, '"');
h = h.replace(/\'/g, ''');
return '<cite>'+h+'</cite>'; });
return s;
}
/*** Coloration PHP ***/
function ColorPHP(s) {
s = s.replace(/<br \/>/g, '\n');
s = s.replace(/<\S[^><]*?>/g, '');
s = s.replace(/\n/g, '<br \/>');
// tag <?, <?php, ?>
s = s.replace(/(<\?php|<\?|\?>)/g, '<big>$1</big>');
// Boucle, Condition, et autres ...
s = s.replace(/\b(if|while|for|do|else|endif|endfor|endwhile|endswitch|case|return|break|case|default|echo|print_r|printf|print|exit|die|foreach|throw|try|catch)\b(\s?)/gi, '<small>$1</small>$2');
// du type function truc () , class truc(), var $machin
s = s.replace(/\b(function|var|class|global|new|static|extends|public|private)\b/g, '<i>$1</i>');
// du type mysql_connect(), fopen() ...
s = s.replace(/([A-Za-z0-9_]+)([\s]*)(\(|\{)/g, '<u>$1</u>$2$3');
// les variables ( $truc );
s = s.replace(/(\$[A-Za-z0-9_\-]+)/g, '<var>$1</var>');
s = s.replace(/\b(this)\b(\->)/g, '<var>$&1-></var>');
// les décimaux
s = s.replace(/(=|\+|\*|\-|\[|\(| |,|;)([\d]+)/g, '$1<sup>$2</sup>');
// Booléen, et caractère divers
s = s.replace(/\b(false|true|null|and|or|xor|as)\b/g, '<em>$1</em>');
s = s.replace(/(==|\!=|&&||||<=|>=|\(|\[|\]|\)|\{|\})/g, '<em>$1</em>');
// Expression régulière
s = s.replace(/(\(|=)(#|@)(.*?)(#|@)/g, '$1<b>$2$3$4</b>');
// quotes double
//s = s.replace(/(\s|\[|\(|=|\.|,)(")([^"]*)(")/g, '$1<strike>$2$3$4</strike>');
s = s.replace(/(")([^"]*)(")/g, '<strike>$1$2$3</strike>');
// quotes simple
//s = s.replace(/(\s|\[|\(|=|\.|,)(')([^']*)(')/g, '$1<strike>$2$3$4</strike>');
s = s.replace(/(')([^']*)(')/g, '<strike>$1$2$3</strike>');
// Commentaires
s = s.replace(/(\/\*.*?\*\/)/g, '<cite>$1</cite>');
s = s.replace(/(\s|<br \/>)(\/\/|#)(.*?)(<br \/>)/g, '$1<cite>$2$3</cite>$4');
return s;
}
function addNumLn(s) {
parent.TagAdd = parent.TagEnd = parent.Class = ''; /** récupère la classe des tags span croisé au passage **/
parent.NbLn = 0; /** compteur de ligne **/
Ln = s+'<br />';
Ln = Ln.replace(/(.*?<br \/>)/g, function(st) {
parent.NbLn++;
endTag = false;
if (st.match(/<span class="[^"]*?">/)) {
parent.Class = st.match(/<span class="([^"]*?)">/)[st.match(/<span class="([^"]*?)">/).length-1];
st = st.replace(/<span class="[^"]*?">/g, ''); /** après récupération de la class, on efface le tag inutile **/
} else if (st.indexOf('</span>') != -1) {
parent.Class = 'CODE_HTM';
} else if (st.indexOf('<cite>') != -1 && st.indexOf('</cite>') == -1) { /** corrige un p'tit bug de commentaire multi-ligne **/
parent.TagAdd = '<cite>';
parent.TagEnd = '</cite>';
} else if (st.indexOf('</cite>') != -1) { /** met fin au commentaire multi-ligne **/
endTag = true;
}
st = '<tr><td class="CODE_NumLn">'+parent.NbLn+'</td><td class="'+parent.Class+'">'+parent.TagAdd+st+parent.TagEnd+'</td></tr>';
if (endTag) {
parent.TagAdd = '';
parent.TagEnd = '';
}
return st;
});
Ln = Ln.replace(/<\/span>/g, '');
return Ln;
}
/** Supprime les Tags HTML inutile et/ou en trop **/
function CleanTag(s) {
Clean = function(st1) {
st1 = st1.replace(/<br \/>/gi, '\n');
st1 = st1.replace(/<\S[^><]*?>/gm, '')
st1 = st1.replace(/\n/gm, '<br />');
return st1;
}
s = s.replace(/(<strike>.*?<\/strike>)/gi, function(st) { return '<strike>'+Clean(st)+'</strike>'; } );
s = s.replace(/(<b>.*?<\/b>)/gi, function(st) { return '<b>'+Clean(st)+'</b>'; } );
s = s.replace(/(<cite>.*?<\/cite>)/gi, function(st) { return '<cite>'+Clean(st)+'</cite>'; } );
return s
}
/** Encode les caractères pouvant géner le parseur **/
function RemoveChar(s) {
Remove = function(St) {
St = St.replace(/</g, '‹');
St = St.replace(/>/g, '›');
return St;
}
s = s.replace(/&/gm, '&');
s = s.replace(/\|/gm, '|');
s = s.replace(/\\\//gm, '\\/');
s = s.replace(/\\\\/gm, '\\');
s = s.replace(/\\/gm, '\\');
s = s.replace(/\\'/gm, '\\'');
s = s.replace(/\\"/gm, '\\"');
s = s.replace(/</gm, '<');
s = s.replace(/>/gm, '>');
s = s.replace(/\t/gm, ' ');
s = s.replace(/\r?\n/g, function(t) { parent.NbLn++; return '<br />'; });
s = s.replace(/(\s\/\*.*?\*\/\s)/g, function(st) { st = st.replace(/\'/g, '\\''); st = st.replace(/\"/g, '\\"'); return Remove(st); });
s = s.replace(/<br \/>\/\*.*?\*\/<br \/>/g, function(st) { st = st.replace(/\'/g, '\\''); st = st.replace(/\"/g, '\\"'); return Remove(st); });
s = s.replace(/(\s\/\/)(.*?<br \/>)/g, function(st) { st = st.replace(/\'/g, '''); st = st.replace(/\"/g, '"'); return Remove(st); });
s = s.replace(/(<br \/>\/\/)(.*?<br \/>)/g, function(st) { st = st.replace(/\'/g, '''); st = st.replace(/\"/g, '"'); return Remove(st); });
s = s.replace(/([\s=;\:\+\.\(\[,])("[^"]*?")/g, function(st) { st = st.replace(/\'/g, '''); return Remove(st); });
s = s.replace(/([\s=;\:\+\.\(\[,])('[^']*?')/g, function(st) { st = st.replace(/\"/g, '"'); return Remove(st); });
s = s.replace(/(\(\/[^\/]*?\/)/g, function(st) { st = st.replace(/'/g, '''); st = st.replace(/"/g, '"'); return Remove(st); });
return s;
}
/** Décode les caractères nécessaire dernièrement encodé **/
function ReplaceChar(s) {
Replace = function(St) {
St = St.replace(/‹/g, '<');
St = St.replace(/›/g, '>');
St = St.replace(/"/g, '"');
St = St.replace(/'/g, "'");
St = St.replace(/ /g, " ");
St = St.replace(/> /g, "> ");
return St;
}
return Replace(s);
}
Conclusion
Coloration Javascript => - Certaines Expressions régulières ne sont pas coloré - <script type="text/javascript">un paquet de code js sans nouvelle ligne</script> ne sont pas coloré ou très mal.
Historique
- 13 octobre 2006 17:18:03 :
- Coloration JavasCript => certaine ligne n'était pas coloré ...
- 14 octobre 2006 17:22:37 :
- Ajout => - Selection du type de coloration (tous, ou seulement l'un d'entre eux)
- Quelque commentaire en plus
J'ai aussi dissocié le code javascript du code html
- 21 octobre 2006 01:46:10 :
- Optimisation du Code => suppression des boucles
- 23 octobre 2006 00:54:59 :
- "Ré"-ajout de la numérotation des lignes
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
programeur javascript,php,html [ par flolag ]
si il ya des webmasters qui aurait creer ou qui voudrai proposez des scripts jaascript,php pour mon site sont les bienvenues.Aler sur mon site et dans
fonction ereg() comme en php [ par eax ]
salut!je suis débutant en javascriptje cherche une fonction en javascript qui fonctionne comme la fonction ereg() en phpsi qqun connait un tutorial po
Recuperer le SId avec javascript [ par nikos283 ]
SalutJ'ai une petit proble, voila j'ai une page php qui crée une session et j'aimerai avec javascript recupérer le nom et valeur de cette session. pou
php et javascript [ par overider ]
salutje voudrais combiner un code javascript (obtenu avec 132menu téléchargeable en freeware sur www.telecharger.com) avec des donnés issus d'une requ
Du php dans un script javascript. Est ce possible? [ par bouchardg ]
Bonjour,Est ce qu'il est possible d'incorporer du php dans un script javascript?Par exemple: j'aimerai faire un menu javascript pour des films, et je
JAVASCRIPT - PHP [ par iomega ]
Bonjour à tous je voudrai savoir si c'est possible de récuper une variable PHP et y insérer dans un script Javascript Exemple $nom = ma variable PHP &
Javascript et PHP [ par iomega ]
Bonjour à tous voici mon ptit problème.j'ai une variable PHP $passeSignature qui me crypte le champ $txtSignature.Ce que je veux faire, c'est dans mon
php et javascript dans une boite confirm [ par alexjet ]
bonjour à tous, J'aimerai recupérer dans une variable php une variable javascript, voici mon script : ---------------------- function confirm($msg) {
JavaScript utilisée dans PHP [ par Chinatraveler ]
BonjourDans une même page *.php mêlant PHP et javascript, je souhaite utiliser l'objet "document.referrer" dans une condition "if" PHP.Est-ce possible
Passage de variable javascript vers php [ par zakuli ]
Bonjour,Débutant Javascript, j'aimerai savoir s'il éxiste un moyen simple de passer une variable (issue d'une fonction javascript) à un script php.Exe
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|