Foros del Web » Programando para Internet » PHP »

Encontrar enlace y guardarlo

Estas en el tema de Encontrar enlace y guardarlo en el foro de PHP en Foros del Web. Hola a todos, tengo una duda, he logrado adquirir el codigo fuente de una pagina, y ahora lo q no he podido hacer es capturar ...
  #1 (permalink)  
Antiguo 12/08/2007, 22:37
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años
Puntos: 14
Encontrar enlace y guardarlo

Hola a todos, tengo una duda, he logrado adquirir el codigo fuente de una pagina, y ahora lo q no he podido hacer es capturar ciertos enlaces, los enlaces que quiero capturar son asi, obviamente siempre comienzan con "http y lo q los diferencia de los otros es q terminan con &"

Código:
<a href="http://pagina.com/4654&">
He intentado con expresiones regulares pero no sé como hacer para buscar ese tipo de link, ya que en la pagina hay varios :S porq la idea es buscar ese tipo de link y guardarlo en una variable.

Ojalá alguien me pueda ayudar, se lo agradeceria. Saludos!
  #2 (permalink)  
Antiguo 13/08/2007, 00:30
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: Encontrar enlace y guardarlo

Si tienes la expresion regular para capturas esos enlaces, y tienes el codigo fuente de la pagina en una variable, puedes usar preg_match_all() con el 3er parametro, que te devolveria un arreglo con las coincidencias (es decir, los enlaces).
__________________
Sin Ideas
  #3 (permalink)  
Antiguo 13/08/2007, 09:42
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años
Puntos: 14
Re: Encontrar enlace y guardarlo

Hola mira, he leido sobre expresiones regulares, pero aún no logro dominarlas, y acá sigue el problema, porque con ninguna combinacion he podido cachar el link como lo necesito que es al estilo:

Código:
<a href="pagina.php?id=delta132=id2=12529&siduid=125292&"
Y lo q necesito q quede almacenado es de la siguiente forma:

pagina.php?id=delta132=id2=12529&siduid=125292&

No logro hacer la combinacion de expresiones regulares para coger esos links y poderlos guardar como ya me has dicho, espero me puedas colaborar con esto :S. Gracias.
  #4 (permalink)  
Antiguo 13/08/2007, 12:58
 
Fecha de Ingreso: agosto-2007
Ubicación: Mexico
Mensajes: 55
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Encontrar enlace y guardarlo

Hola pues bastante interesante tu pregunta jeje hacen faltas mas de estas en el foro para entretenernos me puse a pensarle y aqui te dejo una posible solucion
Código PHP:
<?php
clearstatcache
();
//Detenemos  el buffer para que no se mande nada aun al explorador
ob_start();?>

<a href="pagina.php?id=delta132=id2=12529&siduid=125292&">un link</a>
<a href="pagina.php?id=bravo1312312=id4=12529&siduid=13433&">otro link</a>
<a href="pagina.php?id=omega2=id5=12529&siduid=12342314&">uno mas</a>
<?php
//metemos el contenido de lo que va a salir a pantalla y lo guardamos en una variable
$buffer ob_get_contents();

//mandamos la respuesta al explorador
ob_end_flush();

//Ahora que tenemos todo el contenido en una variable le pasamos la expresion regular y que nos lo guarde en un array
preg_match_all('/<a +href="([^"]+)">/i',$buffer,$links);
echo 
"<br>";

//imprimer el array para que lo veas ahora si ya tienes todos los lins de la pagina :D ya nadamas es cuestion de que dispongas de ellos atraves del array
print_r($links[1]);
?>
Espero te sirva
  #5 (permalink)  
Antiguo 13/08/2007, 15:37
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años
Puntos: 14
Re: Encontrar enlace y guardarlo

Cita:
Iniciado por deliriumlabs Ver Mensaje
Hola pues bastante interesante tu pregunta jeje hacen faltas mas de estas en el foro para entretenernos me puse a pensarle y aqui te dejo una posible solucion
Código PHP:
<?php
clearstatcache
();
//Detenemos  el buffer para que no se mande nada aun al explorador
ob_start();?>

<a href="pagina.php?id=delta132=id2=12529&siduid=125292&">un link</a>
<a href="pagina.php?id=bravo1312312=id4=12529&siduid=13433&">otro link</a>
<a href="pagina.php?id=omega2=id5=12529&siduid=12342314&">uno mas</a>
<?php
//metemos el contenido de lo que va a salir a pantalla y lo guardamos en una variable
$buffer ob_get_contents();

//mandamos la respuesta al explorador
ob_end_flush();

//Ahora que tenemos todo el contenido en una variable le pasamos la expresion regular y que nos lo guarde en un array
preg_match_all('/<a +href="([^"]+)">/i',$buffer,$links);
echo 
"<br>";

//imprimer el array para que lo veas ahora si ya tienes todos los lins de la pagina :D ya nadamas es cuestion de que dispongas de ellos atraves del array
print_r($links[1]);
?>
Espero te sirva

Muchas gracias, lo voy a probar, y me doy cuenta de que no sé nada de expresiones regulares, asi que me pondre a leeer, muchas gracias de nuevo.
  #6 (permalink)  
Antiguo 13/08/2007, 18:22
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años
Puntos: 14
Re: Encontrar enlace y guardarlo

Hola man, mira, lo probe y sirve perfecto, lo acomode para q capturara los links q me interesaran, pero ahora tengo una duda, al querer hacer:

echo "$links[0]";

para que me muestre lo q tiene en la primera posicion del arreglo, me sale solo:

Array

Y se supone q tiene q salir el primero link, no es asi? :S, he intentado con for para recorrerlo y nada no logro hacer q me muestre las paginas indicandole la posicion del arreglo $links[0] o $links[1], te agradeceria la ayuda q me puedas brindar.
  #7 (permalink)  
Antiguo 14/08/2007, 12:28
 
Fecha de Ingreso: agosto-2007
Ubicación: Mexico
Mensajes: 55
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: Encontrar enlace y guardarlo

ok perdon mira lo que pasa es que $links[1] es un array
asi para acceder a cada indice hay que hacerlo asi $links[1][0] $links[1][1] etc
pero mira aki te dejo el ejemplo modificado
Código PHP:
<?php
clearstatcache
();
//Detenemos  el buffer para que no se mande nada aun al explorador
ob_start();?>

<a href="pagina.php?id=delta132=id2=12529&siduid=125292&">un link</a>
<a href="pagina.php?id=bravo1312312=id4=12529&siduid=13433&">otro link</a>
<a href="pagina.php?id=omega2=id5=12529&siduid=12342314&">uno mas</a>
<?php
//metemos el contenido de lo que va a salir a pantalla y lo guardamos en una variable
$buffer ob_get_contents();

//mandamos la respuesta al explorador
ob_end_flush();

//Ahora que tenemos todo el contenido en una variable le pasamos la expresion regular y que nos lo guarde en un array
preg_match_all('/<a +href="([^"]+)">/i',$buffer,$links);
echo 
"<br>";

//aqui sacamos el array y lo movemos a raiz
$links=$links[1]
//imprimer el array para que lo veas ahora si ya tienes todos los lins de la pagina :D ya nadamas es cuestion de que dispongas de ellos atraves del array

//antes
//print_r($links[1]);

//ahora veamos el array
print_r($links)

//Ahora si ya puedes hacer un for

for($x=0;$x<sizeof($links);$x++){
    echo 
$links[$x]."<br />";
}

?>

Última edición por deliriumlabs; 14/08/2007 a las 12:29 Razón: estaba mal comentado
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 04:44.