AddThis Feed Button
AddThis Social Bookmark Button
IMGP1165
IMGP1166
IMGP1143
IMGP1144
IMGP1145
IMGP1146
IMGP1147
IMGP1148
IMGP1149
IMGP1150
Categories

This Month Last Year

Julio 2008
L M X J V S D
« Jun «-»  
 123456
78910111213
14151617181920
21222324252627
28293031  
links
01
Jun

Diccionario Asturiano (Bable) Español (Castellano)

Pos eso, me puse ha realizar unas pruebas de como usar el FULLTEXT Search de MySQL, y me dio por crear un pequeño y simplón buscador para un diccionario “ficticio” (la base de datos es real, pero muy simple)

Podeis consultarlo en http://dev.dubasdey.com/dic_es_as/


31
May

Asunto (subject) de emails con caracteres especiales

Muchas veces pasa que en nuestras aplicaciones requerimos el envío de eMails, y muy posiblemente en el subject del mismo queramos poner textos con acentos u otros caracteres, y nos encontramos con la sorpresa de que esos caracteres no sale correctamente.

El error es debido a que las cabeceras de coreo se procesan como datos de 7 bits. Para corregir esto hemos de codificar la linea subject para usar otra codificación, la mas típica es la Base64 (”B”).

Para la codificación del subject en Base 64 debemos simplemente de crear una nueva cadena de Subject con el formato


=?CHARSET?B?CODIGOBASE64=?=

donde CHARSET es la codificación de la cadena (Ej: UTF-8 o ISO-8859-1) la B indica que la cadena ira codificada en Base64 y en el espacio donde eta CODIGOBASE64 ira la cadena del subject codificada.

de modo que quedaría algo tal que así en la cabecera (para la cadena “Acentos á é í ó &úacute; ñ ñ á é í ó &úacute;” y con codificación UTF-8 usando Base64):


Subject: Acentos =?UTF-8?B?w6Egw6kgw60gw7Mgw7ogw7Egw5Egw4Egw4kgw40gw5Mgw5o=?=

Otra cosa que podemos ver en este ejemplo es que no todo el Subject esta codificado, la palabra “Acentos” esta fuera de la codificación, se pueden codificar solo partes del Subject y no el Subject entero.

Esto es muy &úacute;til especialmente en PHP , donde el envío de email se realiza a bajo nivel y no codifica automáticamente la cabecera.

Para realizar la codificación en Base64 en PHP tenemos la función base64_encode lo que nos hace el proceso mucho mas sencillo.


30
May

Reemplazar Patrones con PHP y Regex

PHP
Tras una pequeña iniciación a las Expresiones Regulares, vamos a ver su aplicación en un contexto específico. Para ello utilizaremos PHP y las funciones ereg($expresion, $cadena) y ereg_replace($expresion ,$sustitución, $cadena).

Como ya me comentaron en menéame acerca del anterior articulo, también existen otras funciones basadas en PERL , que son más potentes, pero no son tan compatibles como las pintan, ya que la mayoría de los servidores traen desactivada la compatibilidad con ellas. Por ello decidí usar solo las funciones nativas de PHP.

El ejemplo que vamos a usar es el de eliminar HTML de unos ficticios comentarios de cara a su almacenamiento en una DB. Para ello ya existe la función strip_tags($cadena,[excepciones]), pero haremos como si no existiera para probar las Expresiones Regulares.

Lo primero que tenemos que tener claro es que patrón debemos simular: Buscamos una cadena de caracteres "encerrada" entre unas posibles etiquetas de HTML (que pueden ser reales o no). Por ejemplo: <b>Texto</b> ó <melkorcete>Texto</melkorcete>. Pero también vamos a poder eliminar etiquetas de XHTML como <img src="ola" />. Con esto lograremos una Expresión Regular bastante completa.

Vamos a desglosarla por partes para ir poco a poco.


// Por definición, debe comenzar por < seguido de cualquier caracter distinto a
// < y que se puede repetir de una a infinitas veces. Se cierra con > o sin él
// (de cara al XHTML se usa ? y no *)
$expresion = “<[^>]+>?”;

// Ahora el contenido de la etiqueta que debe ser cualquier caracter distinto de los corchetes
// y que puede o no existir (de cara al XHTML). Esta vez entre paréntesis para capturarlo después.
$expresion .= “([^>|^<]*)”;

// Ahora el cierre del HTML con la opcion de XHTML incluida
$expresion.= “]*>”;

// Lo que nos deja en total:
$expresion = “<[^>]+>?([^>|^<]*)]*>”;

Una vez conseguido el patrón, ahora vamos a crear nuestra función en PHP. Esta debe tener un comportamiento recurrente para solventar un posible anidamiento de etiquetas. Es decir, que también reemplace <b><i>hola</i></b> o casos parecidos:


// Limpiar HTML de una funcion
// $opcion define si la cadena de salida usara previamente un htmlentities();
function limpiarHTML($cadena,$opcion) {
$expresion = "<[^>]+>?([^>|^<]*)]*>”;

while (ereg($expresion,$cadena) == true) {
$cadena = ereg_replace($expresion,\’\\\\1\’,$cadena);
}

if ($opcion) {
return htmlentities($cadena);
} else {
return $cadena;
}

Con esta función ya tendríamos lo que necesitamos, que mientras que ereg() devuelva true (encontró una etiqueta) vaya reemplazando toda la etiqueta por solo el contenido.

Con esto creo que ya podéis haceros una idea del uso de las Expresiones Regulares , no obstante, próximamente pondré un artículo relacionado con .NET y las Regex.


16
May

Convertir saltos de línea

PHP

Por lo general, si guardas los datos de tu página en una Base de Datos como MySQL, te habrás percatado de que al volcar los datos directamente con un print $fila["Columna"], no respetaba los saltos de carro (tecla enter) que no fueran creados en XHTML con <br />.

A partir de ahora no tendras ese problema, sólo tienes que usar esta función:

// Creamos la consulta y la ejecutamos
 $resultado = mysql_query("select * from posts where idpost = 2") or die (mysql_error());
 $fila = mysql_fetch_array($resultado);

 // Si solo quereis convertir el /n en  :
 print nl2br( $fila["POST"]);

// Si ademas quereis convertir el XHTML para evitar que se interprete:
 print nl2br(htmlentities($fila["POST"]));

A los que os preocupe un posible fallo de validación de XHTML, no os preocupeis, se renderiza con <br /> no con <br> así que es perfectamente válido.


12
May

Enlaces para enviar a las Comunidades

PHP

Ahora que en la Web 2.0 se han puesto de moda las comunidades de promoción de noticias, todos tenemos que dejar de una manera accesible al usuario la posibilidad de enviar el permalink de nuestra web.

Por lógica también seria útil poder situarlos en nuestro RSS así que crearemos una función que genere el acceso a estos servicios sin repetir código.


Ahora solo faltaría hace la llamada a esa función donde queráis que se incluyan nuestros enlaces. Estos ya están preparados para enviar correctamente, y los iconos podéis copiarlos de esta misma web, con click derecho / guardar imagen como…

Espero que os sea de utilidad.


Entradas siguientes »