Come analizzare ed elaborare HTML e XML in PHP

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

Lascia un commento