Ver Mensaje Individual
  #144 (permalink)  
Antiguo 18/02/2010, 06:05
Avatar de Adler
Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.668
Antigüedad: 7 años, 6 meses
Puntos: 124
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
  1. <%@LANGUAGE="VBSCRIPT"%>
  2. <% Option Explicit %>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
  7. <title></title>
  8. <style type="text/css">
  9. .contenedor {
  10. background: #EEEEEE;
  11. border:1px solid rgb(120,120,120);
  12. width:400px;
  13. overflow:auto;
  14. }
  15.  
  16. #lenguaje {
  17. background: orange;
  18. font: 12px verdana;
  19. color: #000000;
  20. padding-left: 4px;
  21. width:100px;
  22. height:18px;
  23. }
  24.  
  25. .contenido1, .contenido2 {
  26. font: 12px monospace;
  27. color: #000000;
  28. padding-top: 1px;
  29. padding-bottom: 1px;
  30. }
  31.  
  32. .contenido1 {
  33. background: #FFFFFF;
  34. }
  35.  
  36. .contenido2 {
  37. background: transparent;
  38. }
  39. </style>
  40. </head>
  41. <body>
  42. <%
  43. Function EnvuelveCod(cadena)
  44. Dim Reg1, RempCorchete, Reg2, RempEtiquetas, Reg3, RempLengaje, arrlang, contador, arretiqueta
  45. Dim enumeraYcolorea_linea, n, encabezado, array_codigo, i, resto, estilo, RempSaltoLinea
  46.  
  47. ' Cambia caracteres especiales por sus entidades HTML
  48. cadena = Server.HTMLEncode(cadena)
  49. cadena = Replace(cadena, "<", "&lt;", 1, -1, 1)
  50. cadena = Replace(cadena, ">", "&gt;", 1, -1, 1)
  51. cadena = Replace(cadena, "{", "{", 1, -1, 1)
  52. cadena = Replace(cadena, "}", "}", 1, -1, 1)
  53. cadena = Replace(cadena, "$", "$", 1, -1, 1)
  54. cadena = Replace(cadena, "%", "%", 1, -1, 1)
  55. cadena = Replace(cadena, "(", "(", 1, -1, 1)
  56. cadena = Replace(cadena, ")", ")", 1, -1, 1)
  57. cadena = Replace(cadena, "\", "\", 1, -1, 1)
  58. cadena = Replace(cadena, "|", "|", 1, -1, 1)
  59. cadena = Replace(cadena, ":", ":", 1, -1, 1)
  60. cadena = Replace(cadena, "?", "?", 1, -1, 1)
  61. cadena = Replace(cadena, "¿", "&iquest;", 1, -1, 1)
  62. cadena = Replace(cadena, "!", "!", 1, -1, 1)
  63. cadena = Replace(cadena, "+", "+", 1, -1, 1)
  64. cadena = Replace(cadena, "*", "*", 1, -1, 1)
  65. cadena = Replace(cadena, ",", ",", 1, -1, 1)
  66. cadena = Replace(cadena, "-", "-", 1, -1, 1)
  67. cadena = Replace(cadena, "_", "_", 1, -1, 1)
  68. cadena = Replace(cadena, "=", "=", 1, -1, 1)
  69. cadena = Replace(cadena, "'", "'", 1, -1, 1)
  70. cadena = Replace(cadena, ".", ".", 1, -1, 1)
  71. cadena = Replace(cadena, "^", "^", 1, -1, 1)
  72. cadena = Replace(cadena,"¡","&iexcl;", 1, -1, 1)
  73. cadena = Replace(cadena,"ñ","&ntilde;", 1, -1, 1)
  74. cadena = Replace(cadena,"Ñ","&Ntilde;", 1, -1, 1)
  75. cadena = Replace(cadena,"á","&aacute;", 1, -1, 1)
  76. cadena = Replace(cadena,"Á","&Aacute;", 1, -1, 1)
  77. cadena = Replace(cadena,"é","&eacute;", 1, -1, 1)
  78. cadena = Replace(cadena,"É","&Eacute;", 1, -1, 1)
  79. cadena = Replace(cadena,"í","&iacute;", 1, -1, 1)
  80. cadena = Replace(cadena,"Í","&Iacute;", 1, -1, 1)
  81. cadena = Replace(cadena,"ó","&oacute;", 1, -1, 1)
  82. cadena = Replace(cadena,"Ó","&Oacute;", 1, -1, 1)
  83. cadena = Replace(cadena,"ú","&uacute;", 1, -1, 1)
  84. cadena = Replace(cadena,"Ú","&Uacute;", 1, -1, 1)
  85. cadena = Replace(cadena , "&quot;", """", 1, -1, 1)
  86.  
  87. ' Reemplaza los corchetes por entidades cuendo no equivalen a las etiquetas de código
  88. Set Reg1= New RegExp
  89. Reg1.IgnoreCase = True
  90. Reg1.Global = True
  91. Reg1.Pattern = "\[(?!(\/*)code)(.*)(\])"
  92. RempCorchete = Reg1.Replace(cadena, "[$2]")
  93.  
  94. ' Este reemplazo hay que hacerlo aquí, para que no afecte al cierre de las etiquetas
  95. cadena = Replace(RempCorchete, "/", "/", 1, -1, 1)
  96.  
  97. ' Reemplaza las etiquetas de código por el caracter "|". Se puede escoger cualquier otro caracter
  98. Set Reg2= New RegExp
  99. Reg2.IgnoreCase = True
  100. Reg2.Global = True
  101. Reg2.Pattern = "(\r?[^a-z0-9&]?\[.*?\]\r?[^a-z0-9&]?)"
  102. RempEtiquetas = Reg2.Replace(cadena, "|")
  103.  
  104. ' Reemplaza las etiquetas de códogo y todo el texto que no está envuelto en ellas.
  105. ' Solo mantenemos el lenguaje (atributo) de las etiquetas en caso que lo tengan y se le añade el caracter "|" .
  106. ' Se puede escoger cualquier otro caracter
  107. Set Reg3= New RegExp
  108. Reg3.IgnoreCase = True
  109. Reg3.Global = True
  110. Reg3.Pattern = "([^\[]*)(\[(?:[^""\]]+))([""]?)(\s*)(.*?)\4\3(\][^\[]*)(\[[^\[]+)"
  111. RempLengaje = Reg3.Replace(cadena, "$5|")
  112.  
  113. ' Separamos el lenguaje
  114. arrlang = Split(Trim(RempLengaje),"|")
  115.  
  116. contador = 0
  117.  
  118. ' Este reemplazo hay que hacerlo aquí
  119. RempEtiquetas = Replace(RempEtiquetas, """", "&quot;", 1, -1, 1)
  120.  
  121. ' Separamos el texto plano del código
  122. arretiqueta = Split(RempEtiquetas,"|")
  123.             enumeraYcolorea_linea = ""
  124.  
  125.     For n = 0 to UBound(arretiqueta)
  126.         ' Es texto plano
  127.         IF (Int(n) mod 2 = 0 ) then
  128.             enumeraYcolorea_linea = enumeraYcolorea_linea & arretiqueta(n)
  129.        
  130.         ' Es código
  131.         ELSE
  132.             ' En la etiqueta de código no se especifica lenguaje
  133.             If (arrlang(contador) = "" or arrlang(contador) = null) then
  134.             encabezado = ""
  135.              ' Se especifica lenguaje
  136.             Else
  137.             encabezado = "<div id=""lenguaje"">" & arrlang(contador) & "</div>"
  138.             End If
  139. contador = contador +1
  140.             enumeraYcolorea_linea = enumeraYcolorea_linea & "<pre><div class=""contenedor"">" & encabezado & "<ol type=""1"">"
  141.  
  142.             array_codigo = Split(arretiqueta(n), vbCrLf) ' Dividimos cada linea de código
  143.  
  144.         For i = 0 to UBound(array_codigo)
  145.             resto = (abs(i) mod 2)
  146.             select Case resto ' Coloreamos cada linea
  147.                     case 0: estilo = "contenido1"
  148.                    case 1: estilo = "contenido2"
  149.             end select
  150.             enumeraYcolorea_linea = enumeraYcolorea_linea & "<li class="""&estilo&""">" &  array_codigo(i) & "</li>"
  151.         Next 'i
  152.             enumeraYcolorea_linea = enumeraYcolorea_linea & "</ol></div></pre>"
  153.  
  154.         END IF
  155.     Next 'n
  156.  
  157. ' Reemplamos los saltos de linea
  158. RempSaltoLinea = Replace(enumeraYcolorea_linea, vbCrLf, "<br />" & vbCrLf, 1, -1, 1)
  159.  
  160. Set RempLengaje = Nothing
  161. Set RempEtiquetas = Nothing
  162. Set RempCorchete = Nothing
  163. EnvuelveCod = RempSaltoLinea
  164. End Function
  165.  
  166.  
  167. ' Función para subir a la bd el html generado
  168. Response.Write EnvuelveCod(Trim(Request.Form("txtarea")))
  169.  
  170. ' Recibe el html de la bd
  171. ' Response.Write Request.Form("txtarea")
  172. %>
  173. </body>
  174. </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("<", "&lt;", $cadena);
$cadena = str_replace(">", "&gt;", $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("¿", "&iquest;", $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("¡","&iexcl;", $cadena);
$cadena = str_replace("ñ","&ntilde;", $cadena);
$cadena = str_replace("Ñ","&Ntilde;", $cadena);
$cadena = str_replace("á","&aacute;", $cadena);
$cadena = str_replace("Á","&Aacute;", $cadena);
$cadena = str_replace("é","&eacute;", $cadena);
$cadena = str_replace("É","&Eacute;", $cadena);
$cadena = str_replace("í","&iacute;", $cadena);
$cadena = str_replace("Í","&Iacute;", $cadena);
$cadena = str_replace("ó","&oacute;", $cadena);
$cadena = str_replace("Ó","&Oacute;", $cadena);
$cadena = str_replace("ú","&uacute;", $cadena);
$cadena = str_replace("Ú","&Uacute;", $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 05:32 Razón: Las etiquetas de code y algunas entidades html están separas para este foro no las ejecute