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
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|