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 | Replica

  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 | Replica


RSS feed dei commenti a questo articolo. TrackBack URI

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Tema: Rubric. Blog su WordPress.com.

Iscriviti

Get every new post delivered to your Inbox.