martes, 29 de abril de 2008

INTRO A REGEX EN PHP

Hola q' tal ?? bueno esta ocasion comentare un poco sobre Expresiones Regulares con php o REGEX para abreviar, ya que es un tema muy profundo q' debemos tocar siempre q' se trate de validar datos en una pagina web.

¿Que son las Expresiones Regulares?

Son una serie de carácteres que forman un patrón, normalmente representativo de otro grupo de carácteres mayor, de tal forma que podemos comparar el patrón con otro conjunto de carácteres para ver las coincidencias.

Las expresiones regulares estan disponibles en casi cualquier lenguaje de programación, pero aunque su sintaxis es relativamente uniforme, cada lenguaje usa su propio dialecto.

Si es la primera vez que te acercas al concepto de expresiones regulares te animará saber que seguro que ya las has usado, aún sin saberlo.

Por ejemplo, cuando en una ventana del BASH ejecutamos ls *.sh para obtener un listado de todos los archivos de un directorio, estamos utilizando el concepto de expresiones regulares, donde el patrón * coincide con cualquier cadena de caracteres.

Unos ejemplos mas simples

// este es nuestro patrón. Si lo comparamos con:
am // coincide
panorama // coincide
ambicion // coincide
campamento // coincide
mano // no coincide
?>

Se trata sencillamente de ir comparando un patrón (pattern) que en este ejemplo es la secuencia de letras 'am'- con una cadena (string) y ver si dentro de ella existe la misma secuencia. Si existe, decimos que hemos encontrado una coincidencia (match, en inglés).

Otro ejemplo:

patrón: el
el ala aleve del leve abanico


Caracteres y Meta Caracteres

Nuestro patrón puede estar formado por un conjunto de carácteres (un grupo de letras, numeros o signos) o por meta caracteres que representan otros carácteres, o permiten una búsqueda contextual.

Los meta-caracteres reciben este nombre porque no se representan a ellos mismos, sino que son interpretados de una manera especial.

He aqui la lista de meta caracteres mas usados:

. * ? + [ ] ( ) { } ^ $ | \


Meta Caracteres de Posicionamiento o Anclas

Los signos ^ y $ sirven para indicar donde debe estar situado nuestro patrón dentro de la cadena para considerar que existe una coincidencia.

Cuando usamos el signo ^ queremos decir que el patrón debe aparecer al principio de la cadena de carácteres comparada.

Cuando usamos el signo $ estamos indicando que el patrón debe aparecer al final del conjunto de carácteres.

O mas exactamente, antes de un caracter de nueva linea

Asi:

^am // nuestro patrón
am // coincide
cama // no coincide
ambidiestro // coincide
Pam // no coincide
Pamela // no coincide

am$
// nuestro patrón
am // coincide
salam // coincide
ambar // no coincide
Pam // coincide


^am$
am // coincide
salam // no coincide
ambar // no coincide

?>

o como en el ejemplo anterior:

patrón: ^el
el ala aleve del leve abanico

Escapando Caracteres

Puede suceder que necesitemos incluir en nuestro patrón algun metacaracter como signo literal, es decir, por si mismo y no por lo que representa. Para indicar esta finalidad usaremos un carácter de escape, la barra invertida \.
Así, un patrón definido como 12\$ no coincide con una cadena terminada en 12, y sí con 12$:

patrón: 100$
el ala aleve del leve abanico cuesta 100$
patrón: 100\$
el ala aleve del leve abanico cuesta 100$

Fijate en los ejemplos anteriores. En el primero, no hay coincidencia, porque se interpreta "busca una secuencia consistente en el número 100 al final de la cadena", y la cadena no termina en 100, sino en 100$.
Para especificar que buscamos la cadena 100$, debemos escapar el signo $

Como regla general, la barra invertida \ convierte en normales caracteres especiales, y hace especiales caracteres normales.

Las funciones básicas de expresiones regulares para comparar una cadena con un patrón son ereg($patron, $cadena) y eregi($patron, $cadena).

La diferencia entre ellas es que ereg() distingue entre mayúsculas y minúsculas y eregi() no.

Estas funciones comprueban si la cadena cumple el patrón y devuelven el valor 1 (verdadero) o 0 (falso). Los argumentos de las funciones pueden ser cadenas o variables que contengan cadenas. Si el patrón es la cadena vacía, las funciones devuelven error.

Ejemplo:

<?php
$cadena1 = "1234567";
$cadena2 = "abcdefg";
$patron = "^[[:digit:]]+$";

if (eregi($patron, $cadena1)) {
echo "<p>La cadena $cadena1 son sólo
números.</p>";
} else {
echo "<p>La cadena $cadena1 no son sólo
números.</p>";
}

if (eregi($patron, $cadena2)) {
echo "<p>La cadena $cadena2 son sólo
números.</p>";
} else {
echo "<p>La cadena $cadena2 no son sólo
números.</p>";
}
?>

Sintaxis de las Expresiones Regulares

Patrón Significado
. cualquier carácter
^c empezar por el carácter c
c$ terminar por el carácter c
c+ 1 o más caracteres c
c* 0 o más caracteres c
c? 0 o 1 caracteres c
\n nueva línea
\t tabulador
\ escape, para escribir delante de caracteres especiales: ^ . [ ] % ( ) | * ? { } \
(cd) caracteres c y d agrupados
c|d carácter c o d
c{n} n veces el carácter c
c{n,} n o más caracteres c
c{n,m} desde n hasta m caracteres c
[a-z] cualquier letra minúscula
[A-Z] cualquier letra mayúscula
[0-9] cualquier dígito
[cde] cualquiera de los caracteres c, d o e
[c-f] cualquier letra entre c y f (es decir, c, d, e o f)
[^c] que no esté el carácter c
[[:alnum:]] cualquier letra o dígito (pero no vocales acentuadas, ñ, ç, etc.)
[[:alpha:]] cualquier letra (pero no vocales acentuadas, ñ, ç, etc.)
[[:digit:]] cualquier dígito
[[:lower:]] cualquier letra minúscula (pero no vocales acentuadas, ñ, ç, etc.)
[[:punct:]] cualquier marca de puntuación
[[:space:]] cualquier espacio en blanco
[[:upper:]] cualquier letra mayúscula (pero no vocales acentuadas, ñ, ç, etc.)

Ejemplos de Expresiones Regulares

Patrón Cadena ¿Cumple? Comentario
abc awbwc No Los caracteres tienen que estar seguidos.
34abc No importa que hayan caracteres antes...
cbabcba ... o después.
a2b g1da2b3 Las expresiones regulares detectan letras, números, ...
áb 3áb4 ... incluso acentos, ...
a\$b 1a$b2 ... salvo los caracteres ^ . [ $ ( ) | * + ? { \ €
que deben llevar una contrabarra \ antes,
además de \n (nueva línea) y \t (tabulador)
[aeiou] bic Los corchetes definen los caracteres admitidos en una posición ...
bcd No
[^aeiou] bic ... o no admitidos
aei No
[p-t] avr Se pueden definir rangos de caracteres...
av1 No
[B-D] PMD ... en minúsculas o mayúsculas ...
AV1 No
[0-9] b9d ... o números
bcd No
[[:alpha:]]

Cualquier carácter alfabético (sin acentos)
[[:digit:]]

Cualquier número
[[:alnum:]]

Cualquier número o carácter alfabéticos (sin acentos)
[[:punct:]]

Cualquier carácter que no sean letras y números (menos el euro)
[[:space:]]

Cualquier tipo de espacio en blanco
[[:upper:]]

Cualquier mayúscula (sin acentos)
[[:lower:]]

Cualquier minúscula (sin acentos)
^ab cab No Los caracteres tienen que estar al principio
abc No importa que hayan caracteres después
ab$ abc No Los caracteres tienen que estar al final
cab No importa que hayan caracteres antes
^ab$ ab Tiene que empezar y acabar por aba ...
abab No ... y no puede haber nada antes o después
ab?c abcde El carácter b puede estar entre a y c...
acde ... o no estar entre a y c ...
adcde No ... pero no puede haber otro carácter
a.c abc El . representa cualquier carácter ...
a c ... incluso el espacio el blanco, ...
abdc No pero sólo un carácter
ab+c abcde El carácter b puede estar una vez...
abbbcde ... o varias ...
acde No ... pero tiene que estar al menos una vez.
ab*c abcde El carácter b puede estar una vez...
abbbcde ... o varias ...
acde ... o ninguna.
ab{3}c abbbc Las llaves indican el número exacto de repeticiones del carácter, ...
abbbbc No ... no puede haber más ...
abbc No ... ni menos.
ab{2,4}c abc No Se pueden definir rangos con límite inferior e inferior
abbc
abbbc
abbbbc
abbbbbc No
ab{2,}c abc No Se pueden definir rangos sin límite superior
a(bc){2}d abcbcd Los paréntesis definen agrupaciones de caracteres.
En este caso bc tiene que aparecer repetido
a(bc)?d abcd Aquí bc puede estar ...
ad ... o no estar, ...
abd No ... pero no puede aparecer sólo la b, o sólo la c u otro carácter
a(b|d)c abc Entre la a y la c puede estar el carácter b...
adc ... o el carácter d, ...
abdc No ... pero no los dos, ...
ac No ... ni ninguno de ellos.
^(ab)|(dc)$ abc Está la pareja ab ...
adc ... o dc ...
abdc ... o las dos, ...
ac No ... pero no ninguna
^(ab)$|^(dc)$ abc No Está la pareja ab, pero sobra la c ...
adc No ... o está la pareja dc, pero sobra la a.
dc Está una de las dos


miércoles, 16 de abril de 2008

y tu que super Heroe eres ??

De acuerdo a este test que encontre en planteta glp este fue mi resultado, cual es el tuyo... jajaja ...

Tus resultados:
Tu Eres Superman (Superhombre)
























Superman (Superhombre)
80%
El Flash
80%
Iron Man (El Hombre de Hierro)
75%
Green Lantern (Linterna Verde)
70%
Hulk
65%
Catwoman (Gatúbela)
55%
Robin
53%
Batman
50%
Wonder Woman (Mujer Maravilla)
45%
Spider-Man (El Hombre Araña)
40%
Supergirl (Superchica)
40%
Tienes un caractetivo buena,
fuerte, y te gusta ayudar a otros.


Chascar aquí para tomar "¿Qué el super héroe es yo?" incuesta

Nuevos Plugions para Compiz Fusion ..

Leo a traves de FusionCast los nuevos plugins que se pueden instalar a este maravilloso proyecto, donde tu escritorio se transforma en una serie de figuras que nunca te habrias imaginado.

La verdad mis respetos a los desarrolladores de Compiz-Fusion, es algo q' vale la pena tratar de instalar en tu PC.

En este caso debes compilar compiz-fusion desde las fuentes para obtener estos plugins ..

Aqui el video




Saludos !!!

jueves, 3 de abril de 2008

EasyEclipse

Saludos comunidad, esta ocasion les comento q' encontre EasyEclipse, se trata de una distribución de Eclipse, el cual es un entorno de desarrollo integrado (IDE), que viene empaquetado conjuntamente con todo lo que necesitas para empezar a escribir código fuente en el lenguale que mas utilizas.

Tiene distintos plugins útiles para programar en un determinado lenguaje Java, LAMP, PHP, Python o Ruby on Rails. En la misma web también están disponibles otros plugins que puedes instalar de forma sencilla.

Ademas EasyEclipse es Open Source

Aqui puedes descargar EasyEclipse


Aqui EasyEclipse en un proyecto PHP


Splash de EasyEclipse

ShareThis