Una cosa che mi è servita molto in questi giorni: estrapolare immagini da un pezzo di HTML.

Questo perchè nel mio db ho un campo dove i dati vengono salvati in HTML; da questo campo ho dovuto estrapolare le immagini per poi passarle ad altre funzioni.

Vediamo qui due esempi; in entrambi i casi useremo DOMDocument e XPath, con i quali possiamo estrapolare facilmente pezzi di contenuto HTML.

Primo esempio:

$doc = new DOMDocument();
    $doc->loadHTML($html);
    $xPath = new DOMXPath($doc);
    $nodo = $xPath->query('//img[@src]');
    foreach ($nodo as $nodo) {
        $imgsrc = $nodo->getAttribute('src');
        echo '<img src="' . $imgsrc . '">';
    }

In molti casi questo già può bastare.

Alla funzione loadHtml passiamo il testo in HTML.

Sotto cerchiamo tutti i tag <img> e nel foreach cerchiamo l'attributo src.

Il problema può nascere nel caso in cui l'immagine sia salvata in base64: se dovete rappresentarla su una pagina nessun problema, ma se dovete passarla ad una libreria esterna (come TCPDF nel mio caso) allora posso sorgere problemi.

In un precedente articolo avevo parlato di come leggere in feed RSS usando Asp.NET e il C#.

Solo che ho notato che in alcuni casi quel metodo crea problemi e visto che non sono riuscito a risolvere ho usato un secondo metodo che adesso vi posto.

In questo caso non avremo bisogno del code-behind, ma solo di controlli server e tutto sarà fatto nella pagina Asp.NET.

Nello specifico useremo un XmlDataSource che prenderà i dati da una pagina web.

Questo XmlDataSource sarà il data-source di un altro controllo, un DataList.

Per andare a prendere i dati che ci servono useremo XPath.