Respuesta: FAQ's del foro de ASP Resaltar las porciones de código que están entre etiquetas
Parecido a lo que hace este foro cuando usamos los highlight
Código ASP:
Ver original<%@LANGUAGE="VBSCRIPT"%> <% Option Explicit %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/> <title></title> <style type="text/css"> .contenedor { background: #EEEEEE; border:1px solid rgb(120,120,120); width:400px; overflow:auto; } #lenguaje { background: orange; font: 12px verdana; color: #000000; padding-left: 4px; width:100px; height:18px; } .contenido1, .contenido2 { font: 12px monospace; color: #000000; padding-top: 1px; padding-bottom: 1px; } .contenido1 { background: #FFFFFF; } .contenido2 { background: transparent; } </style> </head> <body> <% Function EnvuelveCod(cadena) Dim Reg1, RempCorchete, Reg2, RempEtiquetas, Reg3, RempLengaje, arrlang, contador, arretiqueta Dim enumeraYcolorea_linea, n, encabezado, array_codigo, i, resto, estilo, RempSaltoLinea ' Cambia caracteres especiales por sus entidades HTML cadena = Server.HTMLEncode(cadena) cadena = Replace(cadena, "<", "<", 1, -1, 1) cadena = Replace(cadena, ">", ">", 1, -1, 1) cadena = Replace(cadena, "{", "{", 1, -1, 1) cadena = Replace(cadena, "}", "}", 1, -1, 1) cadena = Replace(cadena, "$", "$", 1, -1, 1) cadena = Replace(cadena, "%", "%", 1, -1, 1) cadena = Replace(cadena, "(", "(", 1, -1, 1) cadena = Replace(cadena, ")", ")", 1, -1, 1) cadena = Replace(cadena, "\", "\", 1, -1, 1) cadena = Replace(cadena, "|", "|", 1, -1, 1) cadena = Replace(cadena, ":", ":", 1, -1, 1) cadena = Replace(cadena, "?", "?", 1, -1, 1) cadena = Replace(cadena, "¿", "¿", 1, -1, 1) cadena = Replace(cadena, "!", "!", 1, -1, 1) cadena = Replace(cadena, "+", "+", 1, -1, 1) cadena = Replace(cadena, "*", "*", 1, -1, 1) cadena = Replace(cadena, ",", ",", 1, -1, 1) cadena = Replace(cadena, "-", "-", 1, -1, 1) cadena = Replace(cadena, "_", "_", 1, -1, 1) cadena = Replace(cadena, "=", "=", 1, -1, 1) cadena = Replace(cadena, "'", "'", 1, -1, 1) cadena = Replace(cadena, ".", ".", 1, -1, 1) cadena = Replace(cadena, "^", "^", 1, -1, 1) cadena = Replace(cadena,"¡","¡", 1, -1, 1) cadena = Replace(cadena,"ñ","ñ", 1, -1, 1) cadena = Replace(cadena,"Ñ","Ñ", 1, -1, 1) cadena = Replace(cadena,"á","á", 1, -1, 1) cadena = Replace(cadena,"Á","Á", 1, -1, 1) cadena = Replace(cadena,"é","é", 1, -1, 1) cadena = Replace(cadena,"É","É", 1, -1, 1) cadena = Replace(cadena,"í","í", 1, -1, 1) cadena = Replace(cadena,"Í","Í", 1, -1, 1) cadena = Replace(cadena,"ó","ó", 1, -1, 1) cadena = Replace(cadena,"Ó","Ó", 1, -1, 1) cadena = Replace(cadena,"ú","ú", 1, -1, 1) cadena = Replace(cadena,"Ú","Ú", 1, -1, 1) cadena = Replace(cadena , """, """", 1, -1, 1) ' Reemplaza los corchetes por entidades cuendo no equivalen a las etiquetas de código Set Reg1= New RegExp Reg1.IgnoreCase = True Reg1.Global = True Reg1.Pattern = "\[(?!(\/*)code)(.*)(\])" RempCorchete = Reg1.Replace(cadena, "[$2]") ' Este reemplazo hay que hacerlo aquí, para que no afecte al cierre de las etiquetas cadena = Replace(RempCorchete, "/", "/", 1, -1, 1) ' Reemplaza las etiquetas de código por el caracter "|". Se puede escoger cualquier otro caracter Set Reg2= New RegExp Reg2.IgnoreCase = True Reg2.Global = True Reg2.Pattern = "(\r?[^a-z0-9&]?\[.*?\]\r?[^a-z0-9&]?)" RempEtiquetas = Reg2.Replace(cadena, "|") ' Reemplaza las etiquetas de códogo y todo el texto que no está envuelto en ellas. ' Solo mantenemos el lenguaje (atributo) de las etiquetas en caso que lo tengan y se le añade el caracter "|" . ' Se puede escoger cualquier otro caracter Set Reg3= New RegExp Reg3.IgnoreCase = True Reg3.Global = True Reg3.Pattern = "([^\[]*)(\[(?:[^""\]]+))([""]?)(\s*)(.*?)\4\3(\][^\[]*)(\[[^\[]+)" RempLengaje = Reg3.Replace(cadena, "$5|") ' Separamos el lenguaje arrlang = Split(Trim(RempLengaje),"|") contador = 0 ' Este reemplazo hay que hacerlo aquí RempEtiquetas = Replace(RempEtiquetas, """", """, 1, -1, 1) ' Separamos el texto plano del código arretiqueta = Split(RempEtiquetas,"|") enumeraYcolorea_linea = "" For n = 0 to UBound(arretiqueta) ' Es texto plano IF (Int(n) mod 2 = 0 ) then enumeraYcolorea_linea = enumeraYcolorea_linea & arretiqueta(n) ' Es código ELSE ' En la etiqueta de código no se especifica lenguaje If (arrlang(contador) = "" or arrlang(contador) = null) then encabezado = "" ' Se especifica lenguaje Else encabezado = "<div id=""lenguaje"">" & arrlang(contador) & "</div>" End If contador = contador +1 enumeraYcolorea_linea = enumeraYcolorea_linea & "<pre><div class=""contenedor"">" & encabezado & "<ol type=""1"">" array_codigo = Split(arretiqueta(n), vbCrLf) ' Dividimos cada linea de código For i = 0 to UBound(array_codigo) resto = (abs(i) mod 2) select Case resto ' Coloreamos cada linea case 0: estilo = "contenido1" case 1: estilo = "contenido2" end select enumeraYcolorea_linea = enumeraYcolorea_linea & "<li class="""&estilo&""">" & array_codigo(i) & "</li>" Next 'i enumeraYcolorea_linea = enumeraYcolorea_linea & "</ol></div></pre>" END IF Next 'n ' Reemplamos los saltos de linea RempSaltoLinea = Replace(enumeraYcolorea_linea, vbCrLf, "<br />" & vbCrLf, 1, -1, 1) Set RempLengaje = Nothing Set RempEtiquetas = Nothing Set RempCorchete = Nothing EnvuelveCod = RempSaltoLinea End Function ' Función para subir a la bd el html generado Response.Write EnvuelveCod(Trim(Request.Form("txtarea"))) ' Recibe el html de la bd ' Response.Write Request.Form("txtarea") %> </body> </html>
Uso Cita: Código montado por [Adler]
[cod e="javascript"]funcion funcion() {
document.write ("hola");
}[/cod e]
Las etiquetas de código pueden contener el lenguaje usado o no
[cod e="php"]<?php
$arr = Array(1,2,3,"a");
echo $arr[0];
?>
[/cod e]
[cod e]<%
Dim bienvenida
bienvenida = "mundo"
response.write "hola" & bienvenida
%>
[/cod e]
También podemos hacer que no se ejecuten las entidades HTML
[cod e="php"]
<?php
$cadena = str_replace("<", "<", $cadena);
$cadena = str_replace(">", ">", $cadena);
$cadena = str_replace("{", "& #123;", $cadena);
$cadena = str_replace("}", "& #125;", $cadena);
$cadena = str_replace("$", "& #36;", $cadena);
$cadena = str_replace("%", "& #37;", $cadena);
$cadena = str_replace("(", "& #40;", $cadena);
$cadena = str_replace(")", "& #41;", $cadena);
$cadena = str_replace("\\", "& #92;", $cadena);
$cadena = str_replace("|", "& #124;", $cadena);
$cadena = str_replace(":", "& #58;", $cadena);
$cadena = str_replace("?", "& #63;", $cadena);
$cadena = str_replace("¿", "¿", $cadena);
$cadena = str_replace("!", "& #33;", $cadena);
$cadena = str_replace("+", "& #43;", $cadena);
$cadena = str_replace("*", "& #42;", $cadena);
$cadena = str_replace(",", "& #44;", $cadena);
$cadena = str_replace("-", "& #45;", $cadena);
$cadena = str_replace("_", "& #95;", $cadena);
$cadena = str_replace("=", "& #61;", $cadena);
$cadena = str_replace("'", "& #39;", $cadena);
$cadena = str_replace(".", "& #46;", $cadena);
$cadena = str_replace("^", "& #94;", $cadena);
$cadena = str_replace("¡","¡", $cadena);
$cadena = str_replace("ñ","ñ", $cadena);
$cadena = str_replace("Ñ","Ñ", $cadena);
$cadena = str_replace("á","á", $cadena);
$cadena = str_replace("Á","Á", $cadena);
$cadena = str_replace("é","é", $cadena);
$cadena = str_replace("É","É", $cadena);
$cadena = str_replace("í","í", $cadena);
$cadena = str_replace("Í","Í", $cadena);
$cadena = str_replace("ó","ó", $cadena);
$cadena = str_replace("Ó","Ó", $cadena);
$cadena = str_replace("ú","ú", $cadena);
$cadena = str_replace("Ú","Ú", $cadena);
?>
[/cod e]
Suerte
__________________ Los formularios se envían/validan con un botón Submit <input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
Última edición por Adler; 06/03/2010 a las 06:32
Razón: Las etiquetas de code y algunas entidades html están separas para este foro no las ejecute
|