Se state programmando in PHP vi potrebbe capitare la necessità di prelevare soltanto alcuni tag da una pagina predefinita, oppure riportare la stessa per intero in formato testuale e simili. Senza pensare minimamente di farvi ammazzare a cercare la corretta espressione regolare da applicare in questi casi, il parser open-source PHP Simple HTML DOM Parser fa esattamente quello che vi serve. Il Simple HTML DOM Parser è una libreria per questo linguaggio di programmazione lato server che permette di analizzare e manipolare HTML in modo semplice e intuitivo, simile alla manipolazione del DOM in JavaScript.
- 1) Dove scaricare Simple HTML DOM Parser
- 2) Premessa: cos’è il DOM
- 3) Come funziona Simple HTML DOM Parser
-
4)
Come integrarlo nel vostro codice
- 4.1) // preleva direttamente il codice HTML, pronto ad essere “trattato”
- 4.2) // tutte le immagini con un semplice ciclo basato su una condizione sul DOM
- 4.3) // tutti i link, come sopra
- 4.4) // manipola il DOM inserendo un contenuto per un tag al post di un altro
- 4.5) //permette di prelevare il codice HTML dalla pagina come testo semplice
- 4.6) // crea DOM dall’URL
- 4.7) // trova tutti i blocchi identificati dalla classe di un DIV e li stampa in output
- 5) Posso usarlo in un progetto software commerciale?
Di seguito alcuni esempi di uso, e l’indirizzo web da cui scaricare la libreria.
Dove scaricare Simple HTML DOM Parser
- Scarica la libreria dal sito ufficiale: https://sourceforge.net/projects/simplehtmldom/files/ (la prima volta clicca su I accept, poi su Download Latest Version).
- Estrai il contenuto dell’archivio ZIP nella directory del tuo progetto.
Premessa: cos’è il DOM
Il DOM, acronimo di Document Object Model, è un’interfaccia standardizzata per la rappresentazione e l’interazione con documenti HTML, XML e XHTML. In poche parole, il DOM rappresenta la struttura di un documento web come una gerarchia di oggetti che possono essere manipolati con scripting, come JavaScript ma anche PHP e altri linguaggi. Il DOM rappresenta la struttura di un documento web come un albero gerarchico di nodi, dove ogni nodo rappresenta un elemento, un attributo o un testo all’interno del documento: ogni nodo può avere zero o più nodi figlio e un solo nodo padre.
Il DOM definisce diversi tipi di nodi per rappresentare diverse parti di un documento web, tra cui:
- Elementi: Rappresentano le tag HTML come
<div>
,<p>
,<a>
, ecc. - Attributi: Rappresentano gli attributi di un elemento HTML come
id
,class
,src
, ecc. - Testo: Rappresenta il testo all’interno di un elemento HTML.
- Commenti: Rappresenta i commenti all’interno del codice HTML.
Il DOM fornisce un’interfaccia per accedere e manipolare i nodi di un documento web utilizzando linguaggi di scripting come JavaScript. Questo consente agli sviluppatori di aggiungere, rimuovere o modificare dinamicamente il contenuto, la struttura e lo stile di una pagina web.
Il DOM supporta l’aggiunta di eventi, come clic, hover, submit, ecc., agli elementi della pagina. Gli eventi consentono di rispondere alle azioni dell’utente e di eseguire azioni specifiche in risposta a tali eventi.
In sintesi, il DOM è un modello di programmazione che consente agli sviluppatori di manipolare dinamicamente il contenuto e la struttura di una pagina web attraverso lo scripting. È un concetto fondamentale nello sviluppo web e viene utilizzato ampiamente per creare interattività e dinamicità nelle applicazioni web moderne.
Come funziona Simple HTML DOM Parser
Un parser HTML è un componente software che analizza un documento HTML e ne estrae le informazioni strutturate. Ecco un esempio di come funziona utilizzando un semplice codice HTML.
Supponiamo di avere: il file esempio.html fatto così:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Esempio</title> </head> <body> <h1>Benvenuto</h1> <p>Questo è un esempio di parser HTML.</p> <ul> <li>Elemento 1</li> <li>Elemento 2</li> <li>Elemento 3</li> </ul> </body> </html>
Questo script PHP utilizza il Simple HTML DOM Parser per caricare il documento HTML, estrarre il titolo della pagina, il testo dell’elemento h1 e i testi degli elementi della lista non ordinata, e quindi stamparli a schermo. Il parser analizza il codice HTML e consente di accedere facilmente ai diversi elementi e ai loro contenuti, facilitando l’estrazione delle informazioni desiderate. Qui c’è un parser HTML che utilizza PHP per estrarre alcune informazioni:
<?php // Include il Simple HTML DOM Parser include 'simple_html_dom.php'; // Carica il documento HTML $html = file_get_html('esempio.html'); // Estrapola il title $titolo = $html->find('title', 0)->plaintext; echo "Titolo della pagina: $titolo<br>"; // Estrapola il testo dall'elemento h1 $titoloPrincipale = $html->find('h1', 0)->plaintext; echo "Titolo principale: $titoloPrincipale<br>"; // Estrapola il testo di tutti gli elementi <li> echo "Elementi della lista:<br>"; foreach($html->find('ul li') as $elemento) { echo "- " . $elemento->plaintext . "<br>"; } // Pulizia finale della memoria e conclusione dello script $html->clear(); unset($html); ?>
Come integrarlo nel vostro codice
Come prima cosa in qualsiasi frammento di codice tu decida di includere un parser HTML, dovrai scrivere all’inizio:
include 'simple_html_dom.php';
// Carica il documento HTML da una URL $html = file_get_html('http://www.sitoweb.com'); // Trova tutti gli elementi <a> nel documento foreach($html->find('a') as $element) { echo $element->href . '<br>'; } // Trova il titolo della pagina echo $html->find('title', 0)->plaintext; // Trova un elemento con un determinato ID echo $html->find('#element-id', 0)->plaintext; // Trova elementi con una determinata classe foreach($html->find('.class-name') as $element) { echo $element->plaintext . '<br>'; } // Trova tutti gli elementi figlio di un elemento specifico foreach($html->find('div#container > ul > li') as $element) { echo $element->plaintext . '<br>'; } // Trova gli elementi che corrispondono a un selettore CSS complesso foreach($html->find('div#container ul li a[href^=http://]') as $element) { echo $element->plaintext . '<br>'; }
// preleva direttamente il codice HTML, pronto ad essere “trattato”
$html = file_get_html('http://www.google.com/')
// tutte le immagini con un semplice ciclo basato su una condizione sul DOM
foreach($html->find('img') as $element) echo $element->src . '<br>';
// tutti i link, come sopra
foreach($html->find('a') as $element) echo $element->href . '<br>';
// manipola il DOM inserendo un contenuto per un tag al post di un altro
$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>'); $html->find('div', 1)->class = 'bar'; $html->find('div[id=hello]', 0)->innertext = 'foo'; echo $html; // Output: <div id="hello">foo</div><div id="world" class="bar">World</div>
//permette di prelevare il codice HTML dalla pagina come testo semplice
echo file_get_html('http://www.google.com/')->plaintext;
// crea DOM dall’URL
$html = file_get_html('http://trovalost.it/');
// trova tutti i blocchi identificati dalla classe di un DIV e li stampa in output
$articles = []; foreach($html->find('div.article') as $article) { $item = []; $item['title'] = $article->find('div.title', 0)->plaintext; $item['intro'] = $article->find('div.intro', 0)->plaintext; $item['details'] = $article->find('div.details', 0)->plaintext; $articles[] = $item; } print_r($articles);
Posso usarlo in un progetto software commerciale?
👇 Da non perdere 👇
- 📈 Analizza Cellulari 📱
- 🔐 AI che dolor, Chat 🏴
- 🎯 Targetizza Database SQL 🗄
- 📊 Analizza Errori più comuni 📛
- 🚧 Costruisci Evergreen 📟
- 👩💻 Programma Gratis 🎉
- 💻 Configura Hosting a confronto 💑
- 🔒 Conosci Hosting reti e domini 💻
- 👩💻 Tapioca Informatica 🖥
- 💻 Iconizza Internet 💻
- 🔒 Gestisci Lavoro 🔧
- 💡 Mostra Marketing & SEO 🌪
- 🔑 Apprendi Meteo ⛅
- 🤯 Visiona Mondo Apple 🍎
- 🔍 Supervisiona Mondo Domini 🌐
- 🚀 Metti in cloud monitoraggio servizi online 📈
- 🔮 Anatomizza Nuove tecnologie 🖥
- 🔒 Antani PEC e firma digitale 📩
- 👀 Prematura Programmare 🖥
- 🎮 Lonfa Scrivere 🖋
- 🔒 Conosci Servizi di SMS 📶
- 👀 Guarda Sicurezza informatica e privacy digitale 🖥
- 🎮 Ricorda Siti web 🌎
- 🤖 Ottimizza Spiegoni artificiali 🎓
- 🧠 Neuralizza Svago 🎈
- 📡 Quantizza Usare Excel 🌀
- 🤖 Sovrascrivi Windows 😲
- 🎨 Personalizza Wireless 🚁
- 🔑 Decifra WordPress 🤵
- 💬 Il nostro canale Telegram: iscriviti
- 🟠 VPS (Virtual Private Server): quello che non vi dicono
- 🔵 Domini .cl: come e dove registrarne uno
- 🔵 Quiz logico-matematico – Simulazione online