Domanda

Ho uno script che prende un documento RTF caricato da un utente e unisce i dati di alcune persone nella lettera (nome, indirizzo, ecc.), e lo fa per più persone. Unisco il contenuto della lettera, quindi lo combino con il successivo contenuto della lettera di unione, per tutti i record di persone.

Affettivamente sto combinando un singolo documento RTF in se stesso per altrettante registrazioni di persone alle quali ho bisogno di unire la lettera. Tuttavia, devo prima rimuovere il markup RTF di chiusura e l'apertura del markup RTF di ogni unione, altrimenti l'RTF non verrà visualizzato correttamente. Sembra un lavoro per espressioni regolari.

Essenzialmente ho bisogno di una regex che rimuoverà l'intera stringa:

} \ n \ page ANYTHING \ par

Esempio, questa regex corrisponderebbe a questa:

crap
}
\page{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 September 30, 2008\par
more crap

Quindi potrei farlo solo:

crap
\page
more crap

RegEx è l'approccio migliore qui?

AGGIORNAMENTO: Perché devo usare RTF?

Voglio consentire all'utente di caricare una lettera di modulo che il sistema utilizzerà per creare le lettere unite. Poiché RTF è un testo semplice, posso farlo abbastanza facilmente nel codice. Lo so, RTF è un disastro di una specifica, ma non conosco altre buone alternative.

È stato utile?

Soluzione

Vorrei mettere in discussione l'uso di RTF in questo caso. Non mi è del tutto chiaro cosa stai cercando di fare nel complesso, quindi non posso necessariamente suggerire qualcosa di meglio, ma se puoi provare a spiegare il tuo progetto in modo più ampio, forse posso aiutarti.

Se questo è davvero il modo in cui vuoi andare, questa regex mi ha dato l'output corretto dato il tuo input:

$output = preg_replace("/}\s?\n\\\\page.*?\\\\par\s?\n/ms", "\\page\n", $input);

Altri suggerimenti

A questo posso dire ick ick ick. Tuttavia, il clusge di rcar probabilmente funzionerà, escludendo alcuni strani casi limite in cui RTF in realtà non termina in quella forma, o gli stili a livello di documento includono informazioni importanti che incasinano completamente la formattazione o qualsiasi altra delle molte modalità di errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top