Estensioni XML native
Esistono molti modi per analizzare ed elaborare stringhe o file HTML e XML. L’opzione migliore è quella di usare una delle estensioni XML native poiché vengono fornite insieme a PHP, di solito sono più veloci di tutte le librerie di terze parti e danno tutto il controllo necessario sul markup.
DOM
L’estensione DOM consente di operare su documenti XML tramite l’API DOM con PHP. È un’implementazione del Document Object Model Core Level 3 del W3C, un’interfaccia indipendente dalla piattaforma e dal linguaggio che consente a programmi e script di accedere e aggiornare dinamicamente il contenuto, la struttura e lo stile dei documenti.
DOM è in grado di analizzare e modificare l’HTML (anche danneggiato) reale e può eseguire query XPath. È basato su libxml.
Ci vuole del tempo per diventare produttivi con DOM, ma quel tempo vale la pena. Poiché DOM è un’interfaccia indipendente dal linguaggio di programmazione (troverai implementazioni in molti linguaggi) quindi se hai bisogno di cambiarlo, è probabile che tu sappia già come usare l’API DOM di quel linguaggio.
XMLReader
L’estensione XMLReader è un XML parser pull. Il lettore agisce come un cursore che va avanti nel flusso di documenti e si ferma a ciascun nodo lungo il percorso.
XMLReader, come DOM, è basato su libxml.
XML Parser
Questa estensione consente di creare parser XML e quindi definire gestori per diversi eventi XML. Ogni parser XML ha anche alcuni parametri che puoi regolare.
Anche la libreria XML Parser è basata su libxml e implementa un parser push XML in stile SAX. Potrebbe essere una scelta migliore per la gestione della memoria rispetto a DOM o SimpleXML, ma sarà più difficile da utilizzare rispetto al parser pull implementato da XMLReader.
SimpleXml
L’estensione SimpleXML fornisce un set di strumenti molto semplice e facilmente utilizzabile per convertire XML in un oggetto che può essere elaborato con normali selettori di proprietà e iteratori di array.
SimpleXML è un’opzione quando si è certi che l’HTML è XHTML valido. Se è necessario analizzare l’HTML danneggiato, SimpleXml non va nemmeno considerato.
Librerie di terze parti (basate su libxml)
Se si decide di utilizzare una librearia di terze parti, è consigliato scegliere una librarie che utilizza effettivamente DOM/libxml invece dell’analisi delle stringhe.
FluentDom
FluentDOM fornisce un’interfaccia XML simile a jQuery per DOMDocument in PHP. I selettori sono scritti in XPath o CSS (usando un convertitore da CSS a XPath). Le versioni attuali estendono il DOM implementando interfacce standard e aggiungono funzionalità dal DOM Living Standard. FluentDOM può caricare formati come JSON, CSV, JsonML, RabbitFish e altri. Può essere installato tramite Composer.
HtmlPageDom
HtmlPageDom è una libreria PHP per una facile manipolazione di documenti HTML tramite DOM. Richiede DomCrawler dai componenti di Symfony2 per attraversare l’albero DOM e lo estende aggiungendo metodi per manipolare l’albero DOM dei documenti HTML.
phpQuery
phpQuery è un’API DOM (Document Object Model) lato server, concatenabile, guidata da un selettore CSS3 basata sulla libreria JavaScript jQuery. La libreria è scritta in PHP5 e fornisce un’ulteriore interfaccia da linea di comando (CLI).
HTML 5
è possibile utilizzare una delle librerie precedenti per analizzare HTML5, ma possono esserci stranezze dovute al markup consentito da HTML5. Quindi per HTML5 è bene prendere in considerazione l’utilizzo di un parser dedicato. Da notare che questi sono scritti in PHP, quindi soffrono di prestazioni più lente e di un maggiore utilizzo della memoria rispetto a un’estensione compilata in un linguaggio di livello inferiore.
HTML5DomDocument
HTML5DOMDocument estende la libreria DOMDocument nativa. Risolve alcuni bug e aggiunge alcune nuove funzionalità.
- Conserva le entità html (DOMDocument no)
- Conserva i tag void (DOMDocument no)
- Consente l’inserimento di codice HTML che sposta i tag nei punti corretti (gli elementi del head sono inseriti all’interno del head, gli elementi del body all’interno del body)
- Consente di interrogare il DOM con i selettori CSS
- Aggiunge il supporto per element->classList.
- Aggiunge il supporto per element->innerHTML.
- Aggiunge il supporto per element->outerHTML.
HTML5
HTML5 è un parser e scrittore HTML5 conforme agli standard scritto interamente in PHP. È stabile e utilizzato in molti siti Web di produzione e ha oltre cinque milioni di download.
HTML5 fornisce le seguenti funzionalità:
- Un serializzatore HTML5
- Supporto ai namespaces PHP
- Supporto al composer
- Parser basato su eventi (simile a SAX).
- Un costruttore di alberi DOM
- Interoperabilità con QueryPath
- PHP 5.3.0 o versioni successive