hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
04 de ſeptiembre de 2008, 09:28:00
Noticias: Caracteres maximos de las firmas
Para ver este enlace Registrate o Inicia Sesion
> leer

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Desarrollo Web
| | |-+  Php (Moderador: shevchenko)
| | | |-+  Expresiones regulares en PHP
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Expresiones regulares en PHP  (Leído 1094 veces)
vart001
Administrador
*****
Desconectado Desconectado

Mensajes: 1,417


El Mero, mero!


Ver Perfil WWW
« : 02 de Mayo de 2005, 04:34:58 »

Expresiones regulares en PHP
 Introducción:
La manipulación de cadenas es parte de la vida diaria de un desarrollador de webs:

- Validar entradas del usuario.
- Buscar caracteres dentro de cadenas.
- Comparar cadenas.

Las expresiones regulares pueden hacer mucho más facil esta tarea, cuando comprendas como aplicarlas correctamente. Admito que la mayor parte de las expresiones regulares paracen un poco endiabladas en un primer vistazo, pero intentaremos, en este documento, que salgas airoso de este
primer encuentro.

Como ya deberías saber, utilizando expresiones regulares puedes saber si una cadena concuerda con un patrón específico o si una cadena contiene una subcadena que cumpla un determinado patrón.
Las expresiones regulares soportadas por PHP cumplen con el estándar POSIX y están implementadas a través de la biblioteca regex de Henry Spencer. Tienen algunas diferencias con respecto a la implementación que hace Perl, tenlo en cuenta cuando busques información adicional
acerca de este tema.

Sintáxis de las expresiones regulares:

Empecemos por lo más facil: "abc"

Una expresión regular válida consiste en una o más ramas, separadas por "|".
La expresión resultará concordante con cualquier cosa que concuerde con una de sus ramas. Por tanto la expresión "abc" será concordante con cualquier cadena que contenga "abc".
Es estúpido utilizar ereg para este propósito tan simple. Puedes usar strstr() en su lugar.

La expresión regular "abc|def" concordará con cualquier cadena que contenga "abc" o "def".
Una rama consiste en una o más piezas. Una pieza es un conjunto de cosas relevantes.
Veamos el siguiente ejemplo: "[abc]"

Esto es denominado una expresión acorchetada (bracket expression), seguramente por que está englobada por corchetes. Como los corchetes especifican un conjunto de caracteres, no una cadena, esta expresión concordará con cualquier cadena que contenga "a", "b" o "c".

Si dos caracteres en esta lista estuviesen separados por "-", estaríamos indicando el rango completo de caracteres entre los dos especificados, ambos inclusive:

"[0-9]" concuerda con cualquier cáracter numérico,
"[a-Z]" concuerda con cualquier carácter desde la "a" minúscula hasta la "Z" mayúscula.

Consejo: Para especificar un guión literal como parte de tu conjunto de caracteres, escríbelo en la
última posición del mismo: "[abc-]".
Si un conjunto empieza con "^" (Por ejemplo: "[^abc]"), concordará con cualquier carácter no presente en dicho conjunto.

Puedes utilizar un ciertas abreviaturas para especificar clases de carácteres.
Las clases más utilizadas son:

alnum: "[[:alnum:]]" concuerda con cualquier cadena que contenga caracteres alfanuméricos.

digit: "[[:digit:]]" cualquier cadena que contenga caracteres numéricos.
space: "[[:space:]]" cualquier cadena que contenga espacios.
alpha: "[[:alpha:]]" cualquier cadena que contenga caracteres alfabéticos.

Las expresiones acorchetadas y los caracteres ordinarios pueden ir seguidos de "+", "*", "?" o de un aglutinante (bound):
"a+" concuerda con cualquier cadena que contenga al menos una "a".
"a*" cero o más ocurrencias de "a".
"a?" cero o más ocurrencias de "a".
"a{2}" una secuencia de dos "a".
"a{2,4}" una secuencia de dos a cuatro "a".

Existen algunos caracteres especiales que puedes utilizar en las expresiones regulares de POSIX:

".": concuerda con un sólo carácter, cualquiera que sea.
"^": el comienzo de la cadena.
"$": el final de la cadena.

Consejo: Para utilizar estos caracteres como caracteres ordinarios debes prefijarlos con la secuencia de escape ".^?".
Ya podemos construir algunas expresiones regulares útiles:
"^[[:alnum:]]{4}$": Una cadena conteniendo exáctamente cuatro caracteres alfanuméricos.

"^[^@[:space:]]+@[^@[:space:]]+$": Esta expresión concuerda con cualquier cadena que contenga cualquier carácter excepto "@" y " " (Espacio) antes de una "@" (arroba) y lo mismo después de una "@".

"[^.]*$": Concuerda con todos los caracteres al final de una cadena y antes de ".".

Nótese que la sintaxis de las expresiones regulares es muy promiscua.
Esto quiere decir que intenta concordar tantas veces como sea posible:


echo ereg_replace("<.*>", "", "Test");

Esto no eliminará todos los tags HTML como cabría esperar, pero retornará una cadena vacía: Reemplaza "<" seguido por cualquier carácter (incluyendo ">") hasta el final de la cadena.
La forma correcta para hacerlo sería algo así:

echo ereg_replace("<[^>]*>", "", "Test");

Usando expresiones regulares en las funciones de PHP:
En PHP, cinco funciones utilizan expresiones regulares: ereg(), eregi(), ereg_replace(), eregi_replace() y split().
Con ereg y eregi puedes buscar coincidencias en una cadena. La mayor parte de las veces las utilizarás para validar datos:


$password = "foobar";
if (!eregi("^[[:alnum:]]{4, 6}$", $password))
echo "Contraseña con sintáxis incorrecta: Deben ser de cuatro a seis caracteres alfanuméricos.";


La siguiente expresión regular extrae el dominio de una URL:


$url = "
Para ver este enlace Registrate o Inicia Sesion";
$tld = ereg("([^.]*$)", $url, $regs);
echo $regs[1];


Todas las concordancias a las expresiones agrupadas por "()" son añadidas al array opcional [regs] pasado a la función.
ereg_replace() se utiliza para reemplazar concordancias con una expresión regular. Su utilización
es la siguiente:


$string = "foo-bar";
$string = ereg_replace("^[^-]*", "bar", $string);
// $string es ahora "bar-bar"
echo $string;


Esto sustituye cualquier cosa antes de "-" con "bar".
Existe una extensión muy util a esta funciona: los back-ticks.
Con esta funcionalidad puedes utilizar la concordancia encontrada en tu cadena de sustitución:


$string = "foo-bar";
$string = ereg_replace("(^[^-]*)", "1bar", $string);
// $string is now "foobar-bar"
echo $string;


Básicamente esto es lo mismo que usar la funcionalidad del array de ereg, pero en lugar de tener concordancias añadidas a un array, haces referencia a ellas con "1", "2", etc.

Con todo lo dicho tienes un buen punto de partida para trabajar con expresiones regulares. Además puedes echar un vistazo a la siguiente bibliografía:
man re_format - POSIX 1003.2 regular expressions.
Mastering Regular Expressions: Powerful Techniques for Perl and Other
Tools (Nutshell Handbook).
En línea

root from cph


Para ver este enlace Registrate o Inicia Sesion
Hackear hotmail aqui

Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online