TTJ #004 Effettuare ricerche in file Microsoft Word

Transcript

TTJ #004 Effettuare ricerche in file Microsoft Word
 > TTJ #004 Effettuare ricerche in file Microsoft Word Come utilizzare il formato WordML per effettuare ricerche all’interno di documenti Microsoft Word.
Moltissime informazioni preziose sono nascoste all’interno di documenti Microsoft Word. In questo hack mostriamo come effettuare delle ricerche a testo libero in file Word salvati in formato WordML. Esempio A. La pagina HTML per l’upload di un file (salvatelo come index.php)
<html>
<body>
<form enctype="multipart/form-data" action="search.php" method="post">
WordML file: <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="file" name="file" /><br/>
<input type="submit" value="Upload" />
</form>
</body>
</html>
Esempio B. Lo script per la ricerca a testo libero (Salvatelo come search.php)
Questo script analizza un file in formato WordML caricato sul server tramite una maschera HTML. <html>
<body>
<?php
$wordlist = array( );
$dom = new DOMDocument( );
if ( $_FILES['file']['tmp_name'] )
{
$dom->load( $_FILES['file']['tmp_name'] );
$found = $dom->getElementsByTagName( "t" );
foreach( $found as $element )
{
$words = split( ' ', $element->nodeValue );
foreach( $words as $word )
{
$word = preg_replace( '/[,]|[.]/', '', $word );
$word = preg_replace( '/^\s+/', '', $word );
$word = preg_replace( '/\s+$/', '', $word );
if ( strlen( $word ) > 0 )
{
$word = strtolower( $word );
$wordlist[ $word ] = 0;
}
}
}
}
Zend Technologies srl Largo Richini, 6 20122 Milano Telefono: +39 02 5821 5832 Fax: +39 02 5821 5400 ©Zend Technologies, Inc. Visita il sito www.zend.com/it Pagina 1 di 2 $words = array_keys( $wordlist );
sort( $words );
foreach( $words as $word ) {
?>
<?php echo( $word ); ?><br/>
<?php } ?>
</body>
</html>
Lo script search.php inizia aprendo il file WordML, caricando il DOM XML cercando quindi tutti i tag con nome t, cioè quelli che contengono il testo. Il testo viene poi ripulito da tutti i caratteri di punteggiatura e suddiviso in parole che vengono memorizzate nell’array associativo $wordlist. Alla fine il vettore infine visualizzato dopo essere stato ordinato alfabeticamente. Esecuzione
Scrivete un semplice documento Microsoft Word e salvatelo in formato WrdML. Puntate il browser alla pagina index.php , fate clic sul pulsante Browse, selezionate il file WordML appena salvato e caricatelo sul server facendo clic su Upload. Il file verrà considerato dallo script search.php, che estrarrà le parole, le ordinerà in ordine alfabetico e le visualizzerà in formato HTML. A questo punto potete effettuare la ricerca di parole specifiche o contare le occorrenze di una certa parola per esempio. Il formato WordML è supportato solo da Microsoft Word 2003 e versioni successive. Nel caso delle versioni di Word che non supportano WordML potete modificare il codice in modo da analizzare il file salvato in formato RTF, che è supportato da tutte le versioni “moderne” di Word. Nota
Questo TTJ è tratto da:
PHP Trucchi e segreti
di Jack Herrington
Pagine: 456
ISBN: 978-88-481-1951-1
Prezzo 29,90 €
Pubblicato da Tecniche Nuove (www.tecnichenuove.com).
Ovviamente ne consigliamo la lettura!
Zend Technologies srl Largo Richini, 6 20122 Milano Telefono: +39 02 5821 5832 Fax: +39 02 5821 5400 ©Zend Technologies, Inc. Visita il sito www.zend.com/it Pagina 2 di 2