Usar htaccess

Agregar a favoritos

8 Comentarios

Posteado hace 1290 días en:

Hace un tiempo le surgió una duda a un colega del MSN, no sabia utilizar el url_clean e implementarlo con .htaccess.

He puesto un ejemplo que funciona si tienes o no activado el mod_rewrite.

Es una base simple para un minicontrolador.

A disfrutarlo !.

Nota: Si queréis algo mas complejo es solo cuestión de meterle horas.


Cache en archivos PHP

Agregar a favoritos

7 Comentarios

Posteado hace 1292 días en:

Trasteando un poco por la documentación de symfony me encontré con un sistema muy interesante para cachear trozos de códigos PHP en archivos html.

Lo he adaptado para conseguir 2 funcionillas bastante cortas. Puedes descargarte el ejemplo y trastear un poco.
Hay que tener en cuenta el define CACHE porque es la ruta donde se guardan los archivos cacheados.

Ejemplo:

<?php
//incluimos las funciones
include 'fn.cache.php';
//pasamos un ID y comprobamos si existe el cache
if(!cache('prueba')) {
echo '<ul><li>';
$list = array('xhtml','css','ajax','php');
echo join('</li><li>',$list);
echo '</li></ul>';
//guardamos la salida en cache
cache_save();
}
?>

Por defecto el cache se actualiza cada hora, aunque puedes pasar como segundo parámetro de cache() el tiempo en segundos. Lo que hace es mostrar el cache en caso que exista, sino existe obtiene toda la salida para guardarla con cache_save().
Para consultas sql y cacheado de archivos XML puede venir bien.


URL Clean

Agregar a favoritos

5 Comentarios

Posteado hace 1356 días en:

Usar reglas de parseo en htaccess es una practica muy común, normalmente para embellecer nuestros enlaces, pero hay veces que no podemos hacer uso de ellas y tenemos que pasar los argumentos como se hace normalmente (por GET).

Existe una alternativa y lo usan muchos scripts, es el pasar los argumentos por la variable PATH_INFO, con estos obtenemos casi los mismos resultados, digo casi porque en todo momento tenemos que indicar el nombre del archivo.

Ejemplo:
//El de toda la vida
www.miweb.com/index.php?id=12
//Con htaccess
www.miweb.com/id/12
//La alternativa
www.miweb.com/index.php/id/12


function htaccess() {
global $htaccess;
if(!$htaccess) {
$htaccess = array();
$arguments = explode('/',@$_SERVER['PATH_INFO']);
array_shift($arguments);
$htaccess['args'] = $arguments;
$i = 0;
foreach($arguments as $argument) {
$htaccess['value'][$argument] = @$arguments[++$i];
}
}
if($args=func_get_args()) {
$get =  array ();
foreach($args as $arg) {
            if(is_numeric($arg)) {
            if(isset($_GET[$arg])) $get[$arg] = $_GET[$arg];
  else $get[$arg] = isset($htaccess['args'][$arg]) ? $htaccess['args'][$arg] : '' ;
            } else {
            if(isset($_GET[$arg])) $get[$arg] = $_GET[$arg];
 else $get[$arg] = isset($htaccess['value'][$arg]) ? $htaccess['value'][$arg] : '' ;
}
    }
    if(count($get) == 1) return join('',$get);
    else return $get;
} else {
return $htaccess['args'];
}
}
Con esta función podemos acceder fácilmente tanto por GET como con PATH_INFO, se encarga de parsear y devolver los resultados según los argumentos que le pasemos.

Ejemplos de uso:

Obtener el parametro id:
htaccess(‘id’); //12
Obtener el parametro numero 2
htaccess(2); //12
Obtener varios parametros
htaccess(0,’id’); //array(0=>‘id’,’id’=>12)

Funciona tanto para la url www.miweb.com/index.php?id=12 como para www.miweb.com/index.php/id/12


Parseo CSS

Agregar a favoritos

8 Comentarios

Posteado hace 1407 días en:

¿Expresiones o tokens?

Ando buscando información y scripts para el parseo de hojas de estilos, con el fin de depurar mi parser y aproximarlo un poco al SAC.
Mi parser basado en expresiones regulares se desmorona cuando el código es demasiado complejo, y provoca que los bloques no se reconozcan bien.

He estado mirando scripts, algunos para el highlight del código y me doy cuenta que usan tokens, es decir, cuando encuentran un token de apertura (un carácter) hacen un bucle hasta que no den con el token de cierre.
Esto consume más recursos que mis expresiones regulares, pero es muy efectivo.

Pongamos un ejemplo:


.miclass {
js: "function hello() { alert("hello"); }";
}

Supongamos que quiero añadir código JS, con mi parser al encontrarse con el corchete de cierre }" lo interpretaría como fin de bloque, pero con tokens no pararía hasta llegar al final.

Que es lo mas aconsejable? potenciar las expresiones regulares, o tirar por la otra practica?.


Buscador 11 en 1

Agregar a favoritos

4 Comentarios

Posteado hace 1473 días en:

Partiendo como base la función google(); he creado una clase para mostrar el primer resultado en 11 buscadores.Todos funcionan con el mismo patrón, usa dos expresiones regulares, una para encontrar los resultados y la otra para obtener el enlace y el titulo.

Lista de buscadores:

  1. Google
  2. Yahoo
  3. AlltheWeb
  4. MsnSearch
  5. a9
  6. Flickr
  7. Technorati
  8. Del.icio.us
  9. Bloglines
  10. Bitacoras.com
  11. Wikipedia

La función a llamar devuelve un objeto con 4 variables: La pagina en donde busca (search), el titulo encontrado (title), la URL encontrada (url) y el numero de resultados de la búsqueda (results).

Ejemplo:


$google = search::google('icebeat');
echo $google->title.':'.$google->url;