Com\’è dura la professione!

14 settembre 2006

Estrarre testo da un file OpenDocument con PHP 5

Filed under: php,Programmazione — lbell @ 23:14

Il formato OpenDocument ci permette di manipolare i documenti possedendo solo qualche nozione di Xml. Stavo facendo delle prove di estrazione di testo con PHP 5 da un documento in modo dal poterlo indicizzare, cercando di scrivere meno codice possibile e ho prodotto una ventina di righe, utilizzando le librerie SimpleXML e unzip, una utility a linea di comando dato un documento con un certo nome di file fisso (diciamo b.odt) Attezione: se intendete provare questo programma sappiate che vi crea/sovrascrive un eventuale file content.xml nella directory di lavoro

<?php
function esegui($docname)
{
  shell_exec('/usr/bin/unzip'.' '.$docname .'  content.xml');
  $xml = simplexml_load_file('content.xml');
  $nodes = $xml->xpath('//text:p');
  foreach( $nodes as $item )
    echo $item." ";
  //unlink  commentato per evitare malintesi
}
esegui('b.odt');
?>

ed ottengo il testo. 12 righe di codice (commenti compresi) per ricavare il contenuto di un documento. Non male, ma si può fare di meglio: 1 riga sola

 

<?php shell_exec('/usr/bin/unzip b.odt content.xml');foreach( simplexml_load_file('content.xml')->xpath('//text:p') as $item ) echo $item." ";?>

e funziona. Dopo tante esperienze di programmazione non sono più abituato alla semplicità. Grazie a PHP ed a OpenDocument.

2 commenti »

  1. Ciao,

    sei riuscito a scrivere il programma che indicizza i file?
    Hai qualche suggerimento per scrivere un indicizzatore di file xml?

    Commento di Milena — 4 giugno 2008 @ 13:19 | Rispondi

  2. In Internet trovi diversi motori di indicizzazione, alcuni dei quali gia’ adatti per Open Document. Per indicizzare basta estrarre il testo da XML usando XPath ed indicizzarlo. Un esempio lo puoi trovare nei sorgenti di tracker.

    http://www.gnome.org/projects/tracker/index.html
    http://svn.gnome.org/viewvc/tracker/trunk/

    Commento di lbell — 16 giugno 2008 @ 21:17 | Rispondi


RSS feed for comments on this post. TrackBack URI

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Crea un sito o un blog gratuitamente presso WordPress.com.

%d blogger cliccano Mi Piace per questo: