2010-09-02 6 views
7

Volevo uno script php per recuperare tutte le immagini nel codice HTML ed elencarlo. Qualcuno può aiutarmi a fare questo, o qualche idea su come dovrei procedere? Sono nuovo, quindi qualsiasi aiuto sarebbe apprezzato.codice PHP per attraversare un file HTML per trovare tutte le immagini in là?

+1

Date le risposte e il fatto uno è stato anche dato 3 up voti, sarebbe bene ad accettare la risposta che come la maggior parte delle persone ottengono il riconoscimento appropriato. – CogitoErgoSum

risposta

8

è possibile utilizzare DOMDocument o simplehtmldom. ecco un esempio DOMDocument:

$dom = new DOMDocument(); 
$dom->loadHtml($yourHtmlAsAString); 
foreach ($dom->getElementsByTagName('img') as $img) { 
    echo $img->getAttribute('src').'<br>'; // or whatever you need 
} 
4

Eseguire il codice HTML tramite uno degli many HTML parser libraries e quindi eseguire una query per il valore dell'attributo src su tutti gli elementi img.

1

Suggerisco di guardare nello DOM. Dovrebbe fornire la funzionalità che stai cercando.

3

Ho provato a cercare DOMDocument in PHP? http://php.net/manual/en/domdocument.getelementsbytagname.php

Buon esempio da quella pagina:

$dom = new DomDocument(); 
$dom->prevservWhiteSpace = false; 

$dom->loadHTML($htmlString); 

$imageList = $dom->getElementsByTagName('img'); 
$imageCnt = $imageList->length; 

for ($idx = 0; $idx < $imageCnt; $idx++) { 
    print $imageList->item($idx)->nodeValue . "\n"; 
} 

dovrebbe darvi le basi necessarie.

* Disclaimer, l'esempio è leggermente modificato rispetto al commento che ho tirato fuori ma questo è roba abbastanza semplice.

1

Penso che uno dei modi più semplici per farlo sarebbe attraverso un'espressione regolare. Carica l'HTML tramite l'oggetto DOMDocument come detto ma crea un'espressione - apparentemente PHP ha 3 diversi metodi per farlo. Ho anche scritto un short post sulle espressioni regolari che possono aiutarti a prendere piede sull'argomento. Sono estremamente utili in situazioni come questa.

2

Se si desidera caricare da un file vero e proprio php/html ...

$dom = new DomDocument(); 

if ([email protected]$dom->load('img.php')) { 
    echo 'url does not exist'; 
    return; 
} 

$imgs = $dom->getElementsByTagName('img'); 

for ($buffer = ''; $i = 0, $len = $imgs->length; $i < $len; $i++) 
{ 
    $buffer .= 'image ' . $i . ' is: ' . $imgs->item($i)->getAttribute('src') . '<br/>'; 
} 

echo $buffer; 
+0

Grazie mille per il codice, funziona perfettamente. Nw I knd DomDocument può fare magie :) – Aditya

Problemi correlati