elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Detectar Links y meter en un array
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Detectar Links y meter en un array  (Leído 6,236 veces)
Auton

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Detectar Links y meter en un array
« en: 18 Junio 2011, 11:31 am »

Hola,
por no subir de nuevo un antiguo tema hago la pregunta en uno nuevo.

El tema es este:

http://foro.elhacker.net/php/buscar_links_y_meter_en_un_array-t293080.0.html

y mi pregunta es cómo puedo extraer el texto del link aparte de la url.

Gracias


En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Detectar Links y meter en un array
« Respuesta #1 en: 18 Junio 2011, 12:05 pm »

Escribí un post que te puede ayudar: Parsear HTML con PHP – Simple HTML DOM Parser.

Con esa librería se puede hacer fácilmente lo que tú quieres.


En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Auton

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Detectar Links y meter en un array
« Respuesta #2 en: 18 Junio 2011, 13:11 pm »

Hola,
muchas gracias por tu pronta respuesta.
Esa librería y código están realmente bien.
Quizá lo necesite en algún momento pero busco algo que creo que es más sencillo a partir de algo que ya tengo. Con este mismo código

Código:
<?
$html = file_get_contents('http://www.example.com');

$dom = new DOMDocument();
@$dom->loadHTML($html);

// grab all the on the page
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

for ($i = 0; $i < $hrefs->length; $i++) {
       $href = $hrefs->item($i);
       $url = $href->getAttribute('href');
       echo $url.',';
}
?>


ya consigo extraer todas las urls de un html sin librerías en la variable $url, y me imagino que de la misma manera que tenemos la url me imagino que no debe ser muy dificil extraer lo que hay entre: <a href="http://ellink">
y </a> en otra variable, aunque para mí no es tan sencillo claro.
Si no aparece algo recurriré a lo que me dices.
Gracias de nuevo
« Última modificación: 18 Junio 2011, 13:16 pm por Auton » En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Detectar Links y meter en un array
« Respuesta #3 en: 18 Junio 2011, 14:18 pm »

Mira esta función que sirve para extraer el contenido situado entre dos delimitadores:

Código
  1. <?php
  2.  
  3.    /**
  4.      * Devuelve el contenido situado entre dos delimitadores.
  5.      *
  6.      * @return string
  7.      */
  8.    function getContentFromDelimiters($string, $start, $end) {
  9.        $pos = stripos($string, $start);
  10.        $str = substr($string, $pos);
  11.        $str_two = substr($str, strlen($start));
  12.        $second_pos = stripos($str_two, $end);
  13.        $str_three = substr($str_two, 0, $second_pos);
  14.        $unit = trim($str_three);
  15.        return $unit;
  16.    }
  17.  
  18.    /**
  19.      * Funcionamiento y Uso
  20.      */
  21.  
  22.    $handler = fopen ("http://madhacking.com", r);
  23.    if ($handler)
  24.        echo "[Ok] Access to site.<br />";
  25.    while (!feof($handler)) {
  26.        $webData .= fread($handler, 12000);
  27.    }
  28.    //var_dump($webData);
  29.    fclose($handler);
  30.  
  31.    $webTitle = getContentFromDelimiters($webData, "<title>", "</title>");
  32.    echo "<b>The web title is: </b>".$webTitle;
  33. ?>


También viene con un ejemplo de uso. Lo importante está en la línea resaltada.

Supongo que es lo que quieres, mira a ver si te sirve.
En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
Auton

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Detectar Links y meter en un array
« Respuesta #4 en: 19 Junio 2011, 19:51 pm »

Muchas gracias,
ahora estoy intentando utilizar esto pero para que encuentre los textos de los enlaces de la página de forma dinámica dentro del bucle de mi código.
Te contaré
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Detectar Links y meter en un array
« Respuesta #5 en: 19 Junio 2011, 20:36 pm »

Te puede servir de apoyo ;)
http://shellrootsecurity.blogspot.com/2010/06/simulacion-de-la-tool-list-urlspy-en_1763.html
En línea

Te vendería mi talento por poder dormir tranquilo.
Auton

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Detectar Links y meter en un array
« Respuesta #6 en: 21 Junio 2011, 09:38 am »

Hola,
muchas gracias por tu aportación.
Había visto preg_match_all pero no entiendo muy bien que debo hacer con este código.
'argv' ?
No se dónde tendría que poner la url del contenido de donde tengo que extraer los links (con su texto de link).

Muchas gracias
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Detectar Links y meter en un array
« Respuesta #7 en: 21 Junio 2011, 15:49 pm »

Lo que pasa es que esto se realiza por medio de la consola y por el paso de argumentos tal como,
Código
  1. $ php list-urls.php [URL]
En línea

Te vendería mi talento por poder dormir tranquilo.
Auton

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Detectar Links y meter en un array
« Respuesta #8 en: 24 Junio 2011, 12:01 pm »

Hola!
Ya tengo la solución !
Ante todo gracias por vuestras respuestas.
Aunque la solución era más sencilla.
Partiendo del mismo código que había puesto sólo he tenido que añadir $text = $href->nodeValue; donde la variable $text será el texto del link.

Código:
<?
$html = file_get_contents('http://www.example.com');

$dom = new DOMDocument();
@$dom->loadHTML($html);

// grab all the on the page
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");

for ($i = 0; $i < $hrefs->length; $i++) {
       $href = $hrefs->item($i);
       $url = $href->getAttribute('href');
       $text = $href->nodeValue;
       echo "<a href='$url'>$text</a>";
}
?>
De hecho ahora lo que me faltaría es detectar una imagen en caso de que en lugar de texto fuese una el cuerpo del enlace.
 ;D
« Última modificación: 24 Junio 2011, 12:12 pm por Auton » En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Detectar Links y meter en un array
« Respuesta #9 en: 25 Junio 2011, 08:19 am »

Sin librerías:

Código
  1. <?php
  2.  
  3. $buffer = file_get_contents('http://foro.elhacker.net/');
  4. $links = explode('<a', $buffer);
  5. array_shift($links);
  6. foreach($links as $id => $link){
  7. $lnk = explode('href="', $link);
  8. $lnk = explode('"', $lnk[1]);
  9. $lnk = $lnk[0];
  10. $text = explode('>', $link);
  11. $text = explode('<', $text[1]);
  12. $text = $text[0];
  13. if(substr(trim($text), 0, 1) == '<')
  14. $type = 'object';
  15. elseif(!trim($text))
  16. $type = 'bad link';
  17. else
  18. $type = 'text';
  19.  
  20. $ob_links[] = array(
  21. 'id' => ($id + 1),
  22. 'link' => $lnk,
  23. 'text' => $text,
  24. 'type' => $type
  25. );
  26. }
  27.  
  28. print_r($ob_links);
  29.  
  30. ?>
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Copiar parte de una array a otra array
Programación Visual Basic
sircid 3 5,247 Último mensaje 19 Diciembre 2007, 11:27 am
por LeandroA
Buscar links y meter en un array!
PHP
A2Corp 3 3,758 Último mensaje 11 Mayo 2010, 06:03 am
por A2Corp
Meter en un array la salida de una consulta de varios documentos con Foreach.
PHP
frauzamb 1 2,040 Último mensaje 13 Mayo 2014, 20:02 pm
por DanB
Detectar links
PHP
jalbtercero 1 2,458 Último mensaje 4 Junio 2016, 03:03 am
por [u]nsigned
como meter datos en un array
Programación C/C++
alexmila 2 2,002 Último mensaje 18 Mayo 2017, 20:12 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines