[Aporte] Resaltar las porciones de código que están entre etiquetas Parecido a lo que hace este foro cuando usamos los highlight
Código PHP:
Ver original<!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> <?php function EnvuelveCod($cadena) { // Cambia caracteres especiales por sus entidades HTML $cadena = str_replace("|", "|", $cadena); $cadena = str_replace("?", "?", $cadena); $cadena = str_replace("¿", "¿", $cadena); // Reemplaza los corchetes por entidades cuendo no equivalen a las etiquetas de código $patron1 = "/\[(?!(\/*)code)(.*)(\])/i"; // Este reemplazo hay que hacerlo aquí, para que no afecte al cierre de las etiquetas // Reemplaza las etiquetas de código por el caracter "|". Se puede escoger cualquier otro caracter $patron2 = "/(\r?[^a-z0-9&]?\[.*?\]\r?[^a-z0-9&]?)/i"; $RempEtiquetas = preg_replace($patron2, "|", $RempCorchete); // 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 $patron3 = '/([^\[]*)(\[(?:[^"\]]+))(["]?)(\s*)(.*?)\4\3(\][^\[]*)(\[[^\[]+)/i'; $RempLengaje = preg_replace($patron3, "$5|", $RempCorchete); // Separamos el lenguaje $contador = 0; // Este reemplazo hay que hacerlo aquí $RempEtiquetas = str_replace('"', '"', $RempEtiquetas); //$RempEtiquetas = htmlspecialchars($RempEtiquetas); // Separamos el texto plano del código $arretiqueta = explode("|", $RempEtiquetas); $enumeraYcolorea_linea = ""; for ($n=0; $n < sizeof($arretiqueta); $n++) { // Es texto plano if ($n % 2 == 0 ) { $enumeraYcolorea_linea .= $arretiqueta[$n]; //Es código } else { // En la etiqueta de código no se especifica lenguaje if (($arrlang[$contador] == "") || ($arrlang[$contador] == null)) { $encabezado = ""; // Se especifica lenguaje } else { $encabezado = '<div id="lenguaje">' .$arrlang[$contador]. '</div>'; } $contador += 1; $enumeraYcolorea_linea .= '<pre><div class="contenedor">' .$encabezado. '<ol type="1">'; $array_codigo = explode("\n", trim( $arretiqueta[$n])); // Dividimos cada linea de código for ($i=0; $i < sizeof($array_codigo); $i++) { switch ($resto) { // Coloreamos cada linea case 0: $estilo = "contenido1"; break; case 1: $estilo = "contenido2"; break; } $enumeraYcolorea_linea .= '<li class="'.$estilo.'">' . $array_codigo[$i]. '</li>'; } $enumeraYcolorea_linea .= '</ol></div></pre>'; } } // Reemplamos los saltos de linea $strTemp = preg_replace("/\n/", "<br />", $enumeraYcolorea_linea); return $strTemp; } // Función para subir a la bd el html generado // Recibe el html de la bd //echo stripslashes(campo); ?> </body> </html>
Uso
Código:
Código montado por [Adler]
[c o d e="javascript"]funcion funcion() {
document.write ("hola");
}[/c o d e]
Las etiquetas de código pueden contener el lenguaje usado o no
[c o d e="php"]<?php
$arr = Array(1,2,3,"a");
echo $arr[0];
?>
[/c o d e]
[c o d e]<%
Dim bienvenida
bienvenida = "mundo"
response.write "hola" & bienvenida
%>
[/c o d e]
También podemos hacer que no se ejecuten las entidades HTML
[c o d 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);
?>
[/c o d 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:27
Razón: Las etiquetas de code y algunas etiquetas html están separadas para que este foro no las ejecute
|