Como a mi, y supongo que a muchos otros programadores a veces nos gusta utilizar scripts en PHP ya realizados. Además de ahorrarnos bastante tiempo en nuestros desarrollos. Muchas veces aprendemos de ellos y nos dan nuevas ideas para realizar otros scripts útiles para todo el mundo.
Bueno pues hoy os voy a dejar el primer volumen de la serie que iré posteando en el blog.
Script php que calcula Distancias entre dos puntos
Aquí hay una función muy útil que calcula distancias de un punto a otro usando latitudes y longitudes. La función puede devolvernos distancias en millas, kilómetros o millas náuticas
<?
function distance($lat1, $lon1, $lat2, $lon2, $unit) {
$theta = $lon1 – $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
if ($unit == «K») {
return ($miles * 1.609344);
} else if ($unit == «N») {
return ($miles * 0.8684);
} else {
return $miles;
}
}
?>
Forma de uso
<? echo distance(32.9697, -96.80322, 29.46786, -98.53506, "k")." kilometros"; ?>
Obtener el tiempo actual de donde quieras con la API de google
Este script te devolverá el tiempo que hace en el país o cuidad del mundo que desees saber, lo único que tienes que hacer es cambiar MITIEMPO por la dirección deseada.
<?
$xml = simplexml_load_file('http://www.google.com/ig/api?weather=MITIEMPO');
$information = $xml->xpath("/xml_api_reply/weather/current_conditions/condition");
echo $information[0]->attributes();
?>
Convierte segundos a tiempo (años,meses,dias,horas…)
Función php que convertirá segundos en años,meses,días,horas y etc.
<?php
function Sec2Time($time){
if(is_numeric($time)){
$value = array(
"years" => 0, "days" => 0, "hours" => 0,
"minutes" => 0, "seconds" => 0,
);
if($time >= 31556926){
$value["years"] = floor($time/31556926);
$time = ($time%31556926);
}
if($time >= 86400){
$value["days"] = floor($time/86400);
$time = ($time%86400);
}
if($time >= 3600){
$value["hours"] = floor($time/3600);
$time = ($time%3600);
}
if($time >= 60){
$value["minutes"] = floor($time/60);
$time = ($time%60);
}
$value["seconds"] = floor($time);
return (array) $value;
}else{
return (bool) FALSE;
}
}
?>
Script php para almacenamiento de Caché
Si tu proyecto web no esta basado en un framework o en un CMS, puedes implementar un sistema de almacenamiento de caché en tu sitio con este código fácilmente. El código es muy simple pero sirve para webs pequeñas.
<?php
// Define la ruta y nombre del archivo que se almacenara el cache
$cachefile = 'cached-files/'.date('M-d-Y').'.php';
// define el tiempo que queremos esperar el archivo en segundos.Yo puse el mio en 5 horas.
$cachetime = 18000;
// Revisa si el cache sigue fresco (activo). En el caso de que si lo incluye y sale
if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) {
include($cachefile);
exit;
}
// Si no hay archivo o es demasiado viejo. Renderiza la pagina y muestra el HTML
ob_start();
?>
<html>
todo tu html aca
</html>
<?php
// Listo!. Guardamos el cache en un archivo
$fp = fopen($cachefile, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
// finalmente se lo enviamos al navegador
ob_end_flush();
?>
Forzar una descarga de archivo
Muchos formatos como el mp3, avi, etc. Se reproducen directamente a través del navegador, pero si quieres que sean descargados directamente, el siguiente script ara lo deseado.
<?
function downloadFile($file){
$file_name = $file;
$mime = 'application/force-download';
header('Pragma: public'); // required
header('Expires: 0'); // no cache
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-Type: '.$mime);
header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
header('Content-Transfer-Encoding: binary');
header('Connection: close');
readfile($file_name); // push it out
exit();
}
?>
whois sencillo con PHP
Whois es un servicio muy útil para saber información acerca de un dominio: nombre del propietario,fecha de creación, etc. Usando php y el comando whois de unix es muy fácil hacer un script sencillo de whois en PHP.
<?
$domains = array('home.pl', 'w3c.org');
function creation_date($domain) {
$lines = explode(«n», `whois $domain`);
foreach($lines as $line) {
if(strpos(strtolower($line), ‘created’) !== false) {
return $line;
}
}
return false;
}
foreach($domains as $d) {
echo creation_date($d) . «n»;
}
?>
Conocer la Latitud y Longitud de Una Dirección postal
Con la popularidad del API de google maps,los desarrolladores a menudo necesitamos conocer la longitud y latitud de determinado sitio. Este script php tomara la dirección como parámetro y devolverá en un array con la longitud y la latitud de la dirección deseada.
<?
function getLatLong($address){
if (!is_string($address))die("Todas las direcciones se validaran como srtings");
$_url = sprintf('http://maps.google.com/maps?output=js&q=%s',rawurlencode($address));
$_result = false;
if($_result = file_get_contents($_url)) {
if(strpos($_result,'errortips') > 1 || strpos($_result,'Did you mean:') !== false) return false;
preg_match('!center:s*{lat:s*(-?d+.d+),lng:s*(-?d+.d+)}!U', $_result, $_match);
$_coords['lat'] = $_match[1];
$_coords['long'] = $_match[2];
}
return $_coords;
}
?>
Acortar URL con bit.ly automáticamente con PHP
Esta es una funcion en php te ayudara a acortar URL’s con la API de bit.ly , con tu apikey y tu nombre de usuario simplemente tendrás acceso a este servicio.
<?
function bitly($url) {
$content = file_get_contents("http://api.bit.ly/v3/shorten?login=TUUSER&apiKey=TUAPIKEY&longUrl=".$url."&format=xml");
$element = new SimpleXmlElement($content);
$bitly = $element->data->url;
if($bitly){
return $bitly;
} else {
return '0';
}
}
?>
Forma de uso:
<? echo bitly("http://www.taringa.net"); ?>