Existen muchas formas de colorear automáticamente el código fuente de un lenguaje de programación para que adquiera una sintaxis mucho más amigable.
Como ya imaginarás, es importante mejorar la apariencia monocromática de un script que pretendes mostrar a tus lectores, ya que podrán diferenciar con facilidad las distintas partes del código y comprenderlo mejor.
Existe una función PHP que es capaz de colorear la sintaxis de un código escrito en PHP e incluso identarlo automáticamente, hablo de la función highlight_string.
Ejemplo:
<?
$string = "<? echo 'Hola Mundo'; ?>";
echo highlight_string ($string, true);
?>
Resultado:
<?
echo 'Hola Mundo';
?>
Para los que utilicen WordPress como CMS (Gestor de contenidos) para su blog, pueden usar este sencillo plugin.
El autor indica que para utilizarlo, debes colocar el código que quieras colorear, dentro de las etiquetas <pre lang="LANGUAGE"> y </pre>
Ejemplo:
<pre lang="php"><? echo 'Hola Mundo'; ?></pre>
Como ves he sustituido LANGUAGE por el lenguaje de programación al que quiero colorear su sintaxis, en este caso php.
Para el que no quiera molestarse demasiado en descargar un plugin o usar una función, siempre puede utilizar este demo.
Basta con pegar el código que quieres colorear, elegir en Syntax el lenguaje de programación, marcar la casilla Output as HTML snippet, y pulsar el botón Highlight.
Te devolverá un código HTML con estilos CSS, por lo que tan solo debes añadirlo a tu web o blog y ya se verá la sintaxis con color.
Resultado:
<? echo 'Hola Mundo'; ?>
Para terminar, añado una sencilla función de mi propia cosecha, escrita en PHP:
<?
function sintaxis ($cadena) {
while (strpos ($cadena, '[codigo]')) {
$parte1 = explode ('[codigo]', $cadena, 2);
$parte2 = explode ('[/codigo]', $parte1[1], 2);
$code = highlight_string ($parte2[0], true);
$cadena = $parte1[0].$code.$parte2[1];
}
return $cadena;
}
?>
Su funcionamiento es bastante intuitivo, todo lo que se encuentre entre las etiquetas [codigo] [/codigo], se le aplicará la función highlight_string (que mencioné más arriba), y todo lo demás se dejará intacto.
Nota: Se puede utilizar perfectamente este script sustituyendo la función "highlight_string" por cualquier otra que encontréis en la red que se encargue de colorear la sintaxis de un código.
Si hay cosa que molesta a un Blogger o a un WebMaster es que se aprovechen de su esfuerzo metiendo tu blog en un iFrame, pero los hay que llegan aún más allá y copian tu sitio completo utilizando Bots o Robots automáticos y lo llenan de publicidad.
Un iframe bastante conocido es el de Google Image, sin embargo Google tiene el detalle de indicar el sitio web donde se encuentra cada imagen.
Un iFrame es fácil de solventar, ya que técnicamente no es más que un sitio web incluido dentro de otro. Puedes realizar una simple redirección en JavaScript, colocando el siguiente código dentro de las etiquetas <head> </head>.
<script type="text/javascript">
<!--
if (top.location!=this.location) top.location=this.location;
//-->
</script>
También existe un plugin para WordPress que cumple la misma función, Break Out Of Frames.
Con esto conseguirás que cuando alguien acceda a tu sitio desde un iFrame, sea redireccionado hasta el sitio web original.
Hace poco me encontré con el curioso problema, de que la sección Famosos 2.0 de este blog, fue copiada en otro sitio web.
Creí que era un simple iFrame, pero tras observar el código fuente descubrí que el JavaScript había sido eliminado y todos los enlaces originales remplazados por otros.
Se trataba de un Robot automático o "Web Scraping", que recogía y cambiaba a su antojo el contenido original para después mostrarlo en su web, robando ancho de banda y obteniendo visitas a nuestra costa.
Para poder solucionar el problema, lo primero que debes hacer es descubrir cual es la IP del robot o del dominio que te esta copiando el contenido, lo puedes hacer de dos formas:
Una vez conozcas su IP, puedes hacer uso del fichero de configuración .htaccess para bloquear su acceso a tu web.
#Bloquear IP
order allow,deny
deny from DIRECCION IP
allow from all
Recuerda sustituir "DIRECCION IP" por la IP correspondiente.
Hace tiempo leí un artículo bastante divertido sobre las "formas para ahuyentar a las visitas en un sitio web". Deshabilitando el botón derecho del ratón, cambiando el tamaño de la ventana del navegador, añadiendo varios "Pop Up" al cargar la página, etc.
Ese tipo de practicas son poco recomendables, ya que resultan realmente incómodas, pero por si alguien le molesta que le visiten o disfruta ahuyentando a los usuarios, a continuación explico cómo hacer alguno de esos trucos en JavaScript:
Únicamente tienes que añadir en la etiqueta <body>, el siguiente evento JavaScript.
<body oncontextmenu='return false'>
Aunque ya que te pones puedes bloquear también el botón izquierdo poniendo lo siguiente.
<body oncontextmenu='return false' onselectstart='return false'>
Pon en siguiente código dentro de las etiquetas <head></head> y se cambiará el tamaño de la ventana a la resolución que elijas cuando carguen la página.
<script language="JavaScript">
self.resizeTo(width="800", height="600")
</script>
Este script no funciona para todos los navegadores, y en los que funciona, se puede evitar fácilmente pulsando varias veces el botón "Atrás".
<body onload="Javascript:history.go(1);" onunload="Javascript:history.go(1);">
<script language="JavaScript">
javascript:window.history.forward(1);
</script>
Con el siguiente código se abrirá una ventana con la dirección que elijas, al cargar la página, sin embargo lo más probable es que el navegador la bloquee.
<script language="JavaScript">
window.open("pagina.html", "Ventana", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, width=500, height=300");
</script>
Abrir un Pop Up mediante un enlace no es especialmente molesto, pero es una forma de evitar que el navegador lo bloquee. Para hacerlo, tan solo escribe el enlace de la siguiente forma:
<a href="pagina.htm" target="_blank" onClick="window.open(this.href, this.target, 'width=500, height=300'); return false;">Abrir Pop Up</a>
Nota: Si no te conformas con irritar a los visitantes, siempre puedes evitar que vuelvan a entrar más, bloqueándolos con el archivo .htaccess, pudiendo incluso bloquear países enteros.
Existen numerosas funciones en PHP para la manipulación de fechas, sin embargo siempre están limitadas a un rango que va desde 1701 a 2038 en UNIX.
De entre todas las operaciones posibles, una de las más comunes es restar dos fechas determinadas, sin embargo cualquier fecha que exceda estas cifras devolverá resultados erróneos.
Dado que necesitaba restar fechas de cualquier tiempo, elaboré una función que es capaz de resolver dicha tarea. Aun la estoy probando, de momento funciona correctamente incluso para fechas "AC".
Si tienes el mismo problema a continuación pongo la función, también puedes descargarla aquí.
<?php
function restarFechas ($fecha1, $fecha2) {
define (year, ((365 * 24 * 60 * 60) + (6 * 60 * 60))); //365 Dias y 6 Horas
//Separamos dia, mes y año de las fechas
$fecha1 = explode ("/", $fecha1);
$fecha2 = explode ("/", $fecha2);
//Restamos los años y los pasamos a segundos
$anios = (($fecha2[2] - $fecha1[2]) - 1);
$anios = ($anios * year);
//Calculamos los dias transcurridos entre los meses de cada fecha
$dias = 0;
$mes = $fecha1[1];
for ($i=0; $i<2; $i++) {
switch ($mes) {
case 1: if ($dias == 0) { $dias += (31 - $fecha1[0]); } elseif ($fecha2[1] == 1) { $dias += $fecha2[0]; break 2; } else { $dias += 31; }
case 2: if ($dias == 0) { $dias += (28 - $fecha1[0]); } elseif ($fecha2[1] == 2) { $dias += $fecha2[0]; break 2; } else { $dias += 28; }
case 3: if ($dias == 0) { $dias += (31 - $fecha1[0]); } elseif ($fecha2[1] == 3) { $dias += $fecha2[0]; break 2; } else { $dias += 31; }
case 4: if ($dias == 0) { $dias += (30 - $fecha1[0]); } elseif ($fecha2[1] == 4) { $dias += $fecha2[0]; break 2; } else { $dias += 30; }
case 5: if ($dias == 0) { $dias += (31 - $fecha1[0]); } elseif ($fecha2[1] == 5) { $dias += $fecha2[0]; break 2; } else { $dias += 31; }
case 6: if ($dias == 0) { $dias += (30 - $fecha1[0]); } elseif ($fecha2[1] == 6) { $dias += $fecha2[0]; break 2; } else { $dias += 30; }
case 7: if ($dias == 0) { $dias += (31 - $fecha1[0]); } elseif ($fecha2[1] == 7) { $dias += $fecha2[0]; break 2; } else { $dias += 31; }
case 8: if ($dias == 0) { $dias += (31 - $fecha1[0]); } elseif ($fecha2[1] == 8) { $dias += $fecha2[0]; break 2; } else { $dias += 31; }
case 9: if ($dias == 0) { $dias += (30 - $fecha1[0]); } elseif ($fecha2[1] == 9) { $dias += $fecha2[0]; break 2; } else { $dias += 30; }
case 10: if ($dias == 0) { $dias += (31 - $fecha1[0]); } elseif ($fecha2[1] == 10) { $dias += $fecha2[0]; break 2; } else { $dias += 31; }
case 11: if ($dias == 0) { $dias += (30 - $fecha1[0]); } elseif ($fecha2[1] == 11) { $dias += $fecha2[0]; break 2; } else { $dias += 30; }
case 12: if ($dias == 0) { $dias += (31 - $fecha1[0]); } elseif ($fecha2[1] == 12) { $dias += $fecha2[0]; break 2; } else { $dias += 31; }
}
$mes = 1;
}
//Restamos 1 año si los meses coinciden
if ($fecha1[1] == $fecha2[1] && $fecha1[0] < $fecha2[0]) {
$dias = $dias - 365;
}
//Pasamos los dias a segundos
$segundos = ($dias * 24 * 60 * 60);
//Sumamos los segundos de anios y meses
if ($fecha1[1] < $fecha2[1]) { $segundos = ($anios + year + $segundos); }
elseif ($fecha1[1] > $fecha2[1]) { $segundos = ($anios + $segundos); }
elseif ($fecha1[0] < $fecha2[0]) { $segundos = ($anios + year + $segundos);}
elseif ($fecha1[0] > $fecha2[0]) { $segundos = ($anios + $segundos); }
else { $segundos = ($anios + year); }
//Devolvemos la diferencia entre las dos fechas en segundos
return ($segundos);
}
?>
La función recibe dos fechas, (la primera anterior en el tiempo a la segunda), y devuelve la diferencia entre las dos en segundos.
Teniendo los segundos puedes formatearla como quieras, por ejemplo para obtener los años, tan solo divide el resultado entre 31557600, que equivaldría a 365 días y 6 horas en segundos.
Delivered by FeedBurner
Categorías
Archivos
Blogroll
Enlázanos
Si te gusta MirarPorMirar, puedes poner un enlace en tu web o blog.