Foros del Web » Programando para Internet » PHP »

Preg_match Expresiones regulares

Estas en el tema de Preg_match Expresiones regulares en el foro de PHP en Foros del Web. Hola, estoy practicando con preg_match y sus expresiones regulares para validar o extraer datos de una url. He conseguido que me la valide pero no ...
  #1 (permalink)  
Antiguo 20/05/2011, 03:40
 
Fecha de Ingreso: septiembre-2009
Mensajes: 20
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Preg_match Expresiones regulares

Hola, estoy practicando con preg_match y sus expresiones regulares para validar o extraer datos de una url. He conseguido que me la valide pero no consiguo que me muestre el último valor.

Codigo
Código PHP:
$cadena=$_GET['enlace'];
$patron1'/^(http(s)?:\/\/)?(www\.)?[0-9A-Za-z]+(\.)+(com)+((\.|\/|\?=)+[0-9A-Za-z]+)?/';
$patron2'/^(http(s)?:\/\/)?(www\.)?[0-9A-Za-z]+(\.)+(com)+(\/)+(\?)+[A-Za-z]{1}+(\=)+[0-9A-Za-z]+/';
if(
preg_match($patron2,$cadena$coincidencias)){
    echo 
"bien \n";
echo 
"La URL es: {$coincidencias[0]} \n";
echo 
"El archivo es: {$coincidencias[9]}\n";
}else{
    echo
"no";

URL prueba: http://www.megaupload.com/?d=0TNJIKG6


El resultado que me da es: bien La URL es: http://www.megaupload.com/?d=0TNJIKG6 El archivo es:[NO PONE NADA]

Lo que estoy intentando es que me muestre este apartado 0TNJIKG6 de la url. He probado poniendo $coincidencias[10] pero sigue sin mostrarme nada.

Gracias
  #2 (permalink)  
Antiguo 20/05/2011, 07:47
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Preg_match Expresiones regulares

pues no veo que captures en ningún lado lo que viene después del signo =

aparte te recomiendo que solo captures lo que en realidad necesitaras.. no es necesario capturar todo lo de la expresion !


saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 20/05/2011, 11:02
 
Fecha de Ingreso: septiembre-2009
Mensajes: 20
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Preg_match Expresiones regulares

Bueno es que de momento como solo quiero aprender bien como funciona, pues quiero separar partes de la url.
Respecto a lo que no ves que capture nada después de signo, que quieres decir?

\=)+[0-9A-Za-z]+/'

Lo que pongo no significa que acepto números y letras, sean mayusculas o minusculas después del =?, que es donde iría el número después de ?(alguna letra)=

gracias
  #4 (permalink)  
Antiguo 20/05/2011, 11:23
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Preg_match Expresiones regulares

en PCRE "capturas" con los paréntesis

foo123bar

/^\w+\d+\w+$/ .. hará match pero no captura nada
/^\w+(\d+)\w+$/ .. hará match y capturara 123 para su posterior uso.


saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 20/05/2011, 13:16
 
Fecha de Ingreso: septiembre-2009
Mensajes: 20
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Preg_match Expresiones regulares

Vale, eso de los parentesis no lo sabia :p

Ahora ya me detecta algo, pero creo que solo lo último que está escrito en la url.

Esto es como lo tengo ahora
Código PHP:
$patron2'/^(http(s)?:\/\/)?(www\.)?[0-9A-Za-z]+(\.)+(com)+(\/)+(\?)+[A-Za-z]{1}+(\=)+([0-9A-Za-z])+/';
if(
preg_match($patron2,$cadena$coincidencias)){
    echo 
"bien \n";
echo 
"La URL es: {$coincidencias[0]} \n";
echo 
"El archivo es: {$coincidencias[9]}\n";
}else{
    echo
"no";

URL: http://www.megaupload.com/?d=0TNJIKG6
Y el resultado que me da es:
bien La URL es: http://www.megaupload.com/?d=0TNJIKG6 El archivo es: 6

gracias por responder
  #6 (permalink)  
Antiguo 22/05/2011, 13:11
 
Fecha de Ingreso: septiembre-2009
Mensajes: 20
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Preg_match Expresiones regulares

Nadie sabe porque puede ser?
  #7 (permalink)  
Antiguo 22/05/2011, 14:29
 
Fecha de Ingreso: enero-2011
Mensajes: 112
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Preg_match Expresiones regulares

ola yo tngo un problema con patrones pero no se como solucionarlo
es el paginador de jpinedo pero lo trabajo en php 5.3.5 y lo que pasa es que me da un error de oblsoleto y mi pregunta es como solucionarlo de otra manera sin que salte ese error
Código PHP:
Ver original
  1. $_pagi_sqlConta = eregi_replace("select[[:space:]](.*)[[:space:]]from", "SELECT COUNT(*) FROM", $_pagi_sql);
  #8 (permalink)  
Antiguo 22/05/2011, 15:58
 
Fecha de Ingreso: septiembre-2009
Mensajes: 20
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Preg_match Expresiones regulares

El eregi está obsoleto, por eso te da el error, utiliza preg_replace. Si lo que quieres es evitar que te muestre el error, utiliza @.

[URL]http://www.forosdelweb.com/f18/uso-php-617554/[/URL]

Supongo que habrá más maneras, pero soy bastante novato así que es lo único que puedo decirte.

P.D: Crea un tema nuevo en vez de escribir aquí, más que nada porque la gente no sabrá tu error.

Última edición por Xbio; 22/05/2011 a las 15:59 Razón: preg_replace en vez de preg_match

Etiquetas: expresiones_regulares, final, preg_match
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:15.