Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Problema con DOMDocument e immagini

    ciao!

    sto cercando di recuperare tutti i tag img dal mio sito web usando DOMDocument.
    ho provato così:
    Codice PHP:
    $doc = new DOMDocument();
    libxml_use_internal_errors(true);
    $doc->loadHTML("..........");
    $xPath = new DOMXPath($doc);
    $nodi $xPath->query('//img[@src]');
    var_dump($nodi); 

    ottengo questo:
    codice:
    object(DOMNodeList)#3 (1) {   ["length"]=>   int(0) }

    ovviamente ci stanno i tag img nella pagina (avendolo scritto io il codice del blog, sono sicuro direi)!!
    dove sto sbagliando??

  2. #2
    Il DOMDocument di PHP è molto simile a javascript, dovresti poter recuperare agevolmente i tag img con getelementsbytagname:
    http://php.net/manual/en/domdocument...sbytagname.php

  3. #3
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    Il DOMDocument di PHP è molto simile a javascript, dovresti poter recuperare agevolmente i tag img con getelementsbytagname:
    http://php.net/manual/en/domdocument...sbytagname.php
    ciao!

    ho fatto questa prova al volo:

    Codice PHP:
    $dom = new DOMDocument();
    libxml_use_internal_errors(true);
    $dom->loadHTML("........");
    $imgs $dom->getElementsByTagName('img');

    if (
    $imgs->length 0) {
        foreach (
    $imgs as $img) {
            echo 
    $img->nodeValue;
        }
    } else {
        echo 
    'Nessun elemento trovato!';


    ovviamente ricado nel caso di Nessun elemento trovato!.
    ho provato anche con un altro sito, che contiente solo gallerie di immagini.
    ma ottengo lo stesso identico risultato.

  4. #4
    Prova con getAttribute:
    Codice PHP:
    $dom = new DOMDocument();
    libxml_use_internal_errors(true);
    $dom->loadHTML("........");
    $imgs $dom->getElementsByTagName('img');

    if (
    $imgs->length 0) {
        foreach (
    $imgs as $img) {
            echo 
    $img->getAttribute 'src');
        }
    } else {
        echo 
    'Nessun elemento trovato!';

    oppure fai un dump subito dopo getElementsByTagName

  5. #5
    ok, ho fatto usando curl:

    Codice PHP:
    $url '.............';

    $ch curl_init();
    $timeout 5;
    curl_setopt($chCURLOPT_URL$url);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_CONNECTTIMEOUT$timeout);
    $html curl_exec($ch);

    $dom = new DOMDocument();
    libxml_use_internal_errors(true);
    $dom->loadHTML($html);
    $imgs $dom->getElementsByTagName('img');

    if (
    $imgs->length 0) {
        foreach (
    $imgs as $img) {
            echo 
    $img->getAttribute('src');
        }
    } else {
        echo 
    'Nessun elemento trovato!';


    evidentemten DOMDocument non accetta url!

  6. #6
    No, infatti, gli devi passare una stringa

  7. #7
    Quote Originariamente inviata da lucavizzi Visualizza il messaggio
    No, infatti, gli devi passare una stringa
    eh si, mi sa che mi ero spiegato male.
    io non ho il codice HTML a priori, me lo devo andare a prendere dalle pagine del sito.
    quindi dai vari url da cui è composto.

    cmq con curl funziona tutto.
    grazie!

  8. #8
    Quote Originariamente inviata da fermat Visualizza il messaggio
    cmq con curl funziona tutto.
    grazie!
    Prego, ma non è più comodo file_get_contents()? Io non lo uso quasi mai curl.

  9. #9
    ah si meglio:

    Codice PHP:
    $url '...........';
    $html file_get_contents($url);
    $dom = new DOMDocument();
    libxml_use_internal_errors(true);
    $dom->loadHTML($html);
    $imgs $dom->getElementsByTagName('img');

    if (
    $imgs->length 0) {
        foreach (
    $imgs as $img) {
    //        var_dump($img);
            
    echo $img->getAttribute('src');
        }
    } else {
        echo 
    'Nessun elemento trovato!';


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.