Archivo de la etiqueta: php

Archivo .htaccess “a medida”

Hoy os traigo un .htaccess a medida de un manual/tutorial que encontré hace tiempo en el blog JourmolyIntroducción a MVC con PHP (Parte 1 | Parte 2). Los artículos ya tienen un tiempo, son de 2007 y 2008, pero siguen dando una solución muy buena para aplicar el patrón MVC y la programación orientada a objetos en PHP sin depender de ningún framework. Tecleando el código desde cero.

Yo mismo he usado como base esos tutoriales en alguna aplicación, pero las urls resultantes resultaban bastante desagradables:

http://miaplicacion.com/?controlador=user&accion=edit

Había que hacerlas mas “amigables”. Algo como:

http://miaplicacion.com/user/edit/

Y con este .htaccess se consigue casi al 100%.

1
2
3
4
5
6
7
RewriteEngine On
RewriteCond %{QUERY_STRING} ^([^/]+)
RewriteRule ^([a-z0-9-_]+)/([a-z0-9-_]+)(/)?$ index.php?controlador=$1&accion=$2&%1 [NC]
RewriteRule ^([a-z0-9-_]+)/([a-z0-9-_]+)(/)?$ index.php?controlador=$1&accion=$2 [NC]
RewriteCond %{QUERY_STRING} ^([^/]+)
RewriteRule ^([a-z0-9-_]+)(/)?$ index.php?controlador=$1&%1 [NC]
RewriteRule ^([a-z0-9-_]+)(/)?$ index.php?controlador=$1 [NC]

Sigue leyendo Archivo .htaccess “a medida”

Corrigiendo “símbolos raros” en php

Una de las cosas que más quebraderos de cabeza nos puede dar programando en php es la codificación de caracteres. Y muchas veces debemos presentar en nuestras páginas información de la cual no podemos controlar esta codificación obteniendo resultados desagradables con errores en los acentos, eñes y caracteres no ascii.

Una solución fácil y efectiva, aunque no será la más óptima, es una función que sustituya esos “símbolos raros” por su código html equivalente. De esta forma el navegador no tendrá ningún problema a la hora de mostrarlos.

1
2
3
4
function normStr($str) {
    $noASCII = array(' ' => '', '¡' => '¡', '¢' => '¢', '£' => '£', '¤' => '¤', 'Â¥' => '¥', '¦' => '¦', '§' => '§', '¨' => '¨', '©' => '©', 'ª' => 'ª', '«' => '«', '­' => '­', '®' => '®', '¯' => '¯', '°' => '°', '±' => '±', '²' => '²', '³' => '³', '´' => '´', 'µ' => 'µ', '·' => '·', '¸' => '¸', '¹' => '¹', 'º' => 'º', '»' => '»', '¼' => '¼', '½' => '½', '¾' => '¾', '¿' => '¿', 'À' => 'À', 'Á' => 'Á', 'Â' => 'Â', 'Ã' => 'Ã', 'Ä' => 'Ä', 'Ã…' => 'Å', 'Æ' => 'Æ', 'Ç' => 'Ç', 'È' => 'È', 'É' => 'É', 'Ê' => 'Ê', 'Ë' => 'Ë', 'ÃŒ' => 'Ì', 'Í' => 'Í', 'ÃŽ' => 'Î', 'Ï' => 'Ï', 'Ð' => 'Ð', 'Ñ' => 'Ñ', 'Ã’' => 'Ò', 'Ó' => 'Ó', 'Ô' => 'Ô', 'Õ' => 'Õ', 'Ö' => 'Ö', '×' => '×', 'Ø' => 'Ø', 'Ù' => 'Ù', 'Ú' => 'Ú', 'Û' => 'Û', 'Ãœ' => 'Ü', 'Ý' => 'Ý', 'Þ' => 'Þ', 'ß' => 'ß', 'à ' => 'à', 'á' => 'á', 'â' => 'â', 'ã' => 'ã', 'ä' => 'ä', 'Ã¥' => 'å', 'æ' => 'æ', 'ç' => 'ç', 'è' => 'è', 'é' => 'é', 'ê' => 'ê', 'ë' => 'ë', 'Ã' => 'ì', 'í' => 'í', 'î' => 'î', 'ï' => 'ï', 'ð' => 'ð', 'ñ' => 'ñ', 'ò' => 'ò', 'ó' => 'ó', 'ô' => 'ô', 'õ' => 'õ', 'ö' => 'ö', '÷' => '÷', 'ø' => 'ø', 'ù' => 'ù', 'ú' => 'ú', 'û' => 'û', 'ü' => 'ü', 'ý' => 'ý', 'þ' => 'þ', 'ÿ' => 'ÿ');
    return (strtr($str, $noASCII));
}

splashDL

Hoy os traigo un gestor de descargas sencillo, de mi propia cosecha, para implementar en vuestras webs o blogs. De forma completamente transparente al usuario (y a vosotros mismos) presenta una página “splash” que retrasa la descarga unos segundos, con un banner publicitario de AdSense. Como añadido si se entra a la raíz del directorio de descargas muestra un listado de los archivos que se encuentran en el directorio con enlaces para descargar.

Sigue leyendo splashDL

Always Forever

Always Forever es el nombre que le he dado al tema que uso en ScaryPeguin. Está basado en el tema Forever, de Automattic. Forever se ajustaba casi perfectamente a lo que yo quería para ScaryPenguin, así que las modificaciones han sido mínimas.

He añadido un área de widgets en la cabecera (que uso para un banner de adsense), cambiado ligeramente el pié y traducido al español el tema (Espero no haberme dejado nada en inglés :P).

Si os gustan los cambios que he hecho podéis descargarlo aquí.

Sigue leyendo Always Forever

Sustituir URLs por links con php

Tras mucho googlear y no encontrar ninguna función que buscase las urls correctamente superé mi vagancia natural y me decidí a crearla yo mismo copiando el comportamiento de twitter al poner urls en los tweets. La podéis ver funcionando en mi página TGMF en los comentarios de las fotos.

El resultado fue este:

1
2
3
4
5
6
7
8
function searchLinks($cadena){
  $cadena = " ".$cadena." ";
  $cadena = ereg_replace('([^a-zA-Z0-9@/."])(www.)([a-zA-Z0-9]{1}(\.*[_0-9a-zA-Z-]+)+\.{1}[a-zA-Z]{2,4})(/[-a-zA-Z0-9%_+.~#?&//=]+)*(:[0-9]+)*([^a-zA-Z0-9@])', '\1\3\5\7', $cadena);
  $cadena = ereg_replace('([^a-zA-Z0-9@/."])([a-zA-Z0-9]{1}[_0-9a-zA-Z-]+\.{1})([a-zA-Z]{1}(\.*[_0-9a-zA-Z-]+)+\.{1}[a-zA-Z]{2,4})(/[-a-zA-Z0-9%_+.~#?&//=!]+)*(:[0-9]+)*([^a-zA-Z0-9@])', '\1\2\3\5\7', $cadena);
  $cadena = ereg_replace('([^a-zA-Z0-9@/."])([a-zA-Z0-9]{1}(\.*[_0-9a-zA-Z-]+)+\.{1}[a-zA-Z]{2,4})(/[-a-zA-Z0-9%_+.~#?&//=]+)+(:[0-9]+)*([^a-zA-Z0-9@])', '\1\2\4\6', $cadena);
  $cadena = ereg_replace('([^a-zA-Z0-9@/."])(http://|ftp://|https://|ftps://)(www.)*([a-zA-Z0-9]{1}(\.*[_0-9a-zA-Z-]+)+\.{1}[a-zA-Z]{2,4})(/[-a-zA-Z0-9%_+.~#?&//=!]+)*(:[0-9]+)*([^a-zA-Z0-9])', '\1\4\6\8', $cadena);
  return trim($cadena);
}

Sigue leyendo Sustituir URLs por links con php